2022-7-11 剑指offer-位运算

剑指 Offer 56 - II. 数组中数字出现的次数 II

难度中等

在一个数组 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 }

思路:通用做法是二进制重复的数字一定是对应次数的整数倍,对所有数字计算后每一位取余,剩下构成的数字就是结果。

posted on 2022-07-11 17:14  阿ming  阅读(13)  评论(0编辑  收藏  举报

导航