方法一:
思路:
用Set存储数组元素,遍历数组,若该元素在Set中已存在,则删除该元素,否则添加该元素。最终剩下的元素就为Single Number。
public class Solution {
public int singleNumber(int[] nums) {
int result = 0;
Set<Integer> set = new HashSet<Integer>();
int len = nums.length;
for (int i = 0; i < len; i++) {
if (!set.contains(nums[i]))
set.add(nums[i]);
else
set.remove(nums[i]);
}
Iterator<Integer> it = set.iterator();
return it.next();
}
}
Runtime:17ms
方法二:
思路:
利用异或操作。假想成相同元素全部相邻,于是将所有元素依次做异或操作,相同元素异或为0,最终剩下的元素就为Single Number。
public class Solution {
public int singleNumber(int[] nums) {
int result = 0;
for (int i = 0; i < nums.length; i++) {
result = result ^ nums[i];
}
return result;
}
}
Runtime:1ms