题目:Given an array of integers, every element appears twice except for one. Find that single one.
一开始没有考虑空间,直接用hashMap,也AC了
public class Solution {
public int singleNumber(int[] nums) {
HashMap<Integer,Integer> map = new HashMap<>();
for(int i : nums)
{
if(map.containsKey(i))
{
map.put(i,map.get(i)+1);
}else
map.put(i,1);
}
for(int i: nums)
{
if(map.get(i) == 1){return i;}
}
return 0;
}
}
``
public class Solution {
public int singleNumber(int[] nums) {
if(nums.length == 0){return 0;}
int result = nums[0];
for(int i=1;i<nums.length;i++)
{
result ^= nums[i];
}
return result;
}
}
考虑空间复杂度为常数后。该题可以利用位运算解决。
对应k=2时,每个操作数进行异或^,相同为0,不同为1