给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 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 = 0, end = 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}
解析:
这个很简单,一个从前一个从后两两比较即可,并且比较的时候过滤掉非字母和数字。