Given an 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?
Difficulty: Medium
Solution 1: HashSet
public class Solution {
public int singleNumber(int[] nums) {
HashSet<Integer> map = new HashSet<Integer>();
int ans = 0;
for(int i = 0; i < nums.length; i++){
if(map.contains(nums[i])){
map.remove(nums[i]);
}
else{
map.add(nums[i]);
}
}
Iterator<Integer> it = map.iterator();
return it.next();
}
}
Solution 2: Bitmap
public class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
for(int i = 0; i < nums.length; i++){
ans = ans ^ nums[i];
}
return ans;
}
}