2022-7-11 剑指offer-位运算
在一个数组 nums
中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
1 class Solution { 2 public int singleNumber(int[] nums) { 3 Map<Integer,Integer> map=new HashMap<>(); 4 Set<Integer> set=new HashSet<>(); 5 for (int x:nums){ 6 if (!map.containsKey(x)){ 7 map.put(x,1); 8 set.add(x); 9 }else{ 10 set.remove(x); 11 } 12 } 13 int ans=0; 14 for (int x:set) ans=x; 15 return ans; 16 } 17 }
思路:通用做法是二进制重复的数字一定是对应次数的整数倍,对所有数字计算后每一位取余,剩下构成的数字就是结果。