137. 只出现一次的数字 II
题目#
题解#
方法一#
- 直接用
哈希表
出现 3 次则从哈希表
移除,最后剩下的就是结果
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 进行取模则得出结果数字该位的值
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;
}
}
本文由mdnice多平台发布
作者:程序员小航
出处:https://www.cnblogs.com/liuzhihang/p/17766362.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
欢迎关注个人公众号:『 程序员小航 』
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!