137. 只出现一次的数字 II

题目

题解

方法一

  • 直接用哈希表出现 3 次则从哈希表移除,最后剩下的就是结果
java 复制代码
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 进行取模则得出结果数字该位的值
java 复制代码
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多平台发布

相关推荐
深蓝AI2 小时前
12000 名工程师的高盛,只用四个月就收回了交易员的 AI 编程权限
人工智能·程序员
深蓝AI8 小时前
为什么 agent 的 demo 都很惊艳,上了生产就不靠谱
人工智能·程序员
深蓝AI9 小时前
一个项目五个 AI 同时干活,Claude Code 怎么让它们不互相打架
人工智能·程序员
程序员cxuan3 天前
讲真,智能路由这事儿,还得看基元律动
人工智能·后端·程序员
AI前端工程狮3 天前
用户点了「取消」,我的服务进程退出了
人工智能·程序员
得物技术3 天前
压测AI Agent 治理与评测调优实践
程序员·架构·测试
SimonKing3 天前
Workbuddy太占C盘空间了,写个迁移工具迁走10G的数据
java·后端·程序员
挖掘狂人3 天前
Token 都上双十一货架了,AI 电脑的账该怎么算?
大数据·程序员·ai编程
深蓝AI3 天前
26.1% 的 Agent 技能带漏洞:skills 霸榜 GitHub 当天,NVIDIA 和 OpenAI 同时掏出安检仪
人工智能·程序员
程序员cxuan3 天前
离谱,AI 大佬顺手搓了个 YouTube ,而我顺手给他搓了个中文插件
人工智能·后端·程序员