试题
Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4
代码
hashset去重
class Solution {
public int singleNumber(int[] nums) {
HashSet<Integer> uni = new HashSet<>();
int sum = 0;
for(int n : nums){
uni.add(n);
sum += n;
}
int sum2 = 0;
for(int n : uni){
sum2 += n;
}
return 2*sum2-sum;
}
}
class Solution {
public int singleNumber(int[] nums) {
int out = 0;
for(int n : nums){
out ^= n;
}
return out;
}
}