137. 只出现一次的数字 II 2023-10-22 17:44:22 浏览数 (1) 题目题解方法一直接用哈希表出现 3 次则从哈希表移除,最后剩下的就是结果代码语言:javascript复制class Solution { public int singleNumber(int[] nums) { Map<Integer, Integer> map = new HashMap<>(); for (int num : nums) { Integer integer = map.getOrDefault(num, 0); if (integer == 2) { map.remove(num); } else { map.put(num, integer 1); } } for (Integer i : map.keySet()) { return i; } return 0; } } 方法二其余元素都出现三次,其中某个元素只出现一次,将每个元素都转化为二进制,则可能的结果为 4 个数都相同或者 3 个数都相同同一位结果可能为 0000、1111、0001、1110通过位运算得出所有该位的和,对 3 进行取模则得出结果数字该位的值代码语言:javascript复制class Solution { public int singleNumber(int[] nums) { int res = 0; for (int i = 0; i < 32; i ) { int sum = 0; for (int num : nums) { // 最后一位的值 sum = num >> i & 1; } // 将不同的数补到 res 后面 res |= sum % 3 << i; } return res; } } int integer map return 二进制 0 人点赞 上一篇:分享雷军22年前编写的代码