给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1

示例 2:

输入: [4,1,2,1,2]
输出: 4

上期的问题是:139,验证回文串

 1public boolean isPalindrome(String s) {
2    if (s.trim().length() == 0 || s.trim().length() == 1)
3        return true;
4    int start = 0end = s.length() - 1;
5    while (start < end) {
6        while (start <= end && !Character.isLetterOrDigit(s.charAt(start)))
7            start++;
8        while (start <= end && !Character.isLetterOrDigit(s.charAt(end)))
9            end--;
10        if (start <= end && Character.toLowerCase(s.charAt(start)) != Character.toLowerCase(s.charAt(end)))
11            return false;
12        start++;
13        end--;
14    }
15    return true;
16}

解析:

这个很简单,一个从前一个从后两两比较即可,并且比较的时候过滤掉非字母和数字。