力扣面试150题--只出现一次的数字II

Day 92

题目描述

思路

初次思路 :想不出来 哈哈哈指挥hash 就不放出来丢人了
题解思路 :这个做法是每次确定一个位是否为答案为1 的位

具体是这样的:由于除了答案外每个数字都会出现3次,那么我们不考虑答案的情况,那么一个二进制位的可能为0或者1,将所有数组中(排除答案)在这个位的值相加必然是3的倍数 ,二进制位为0无所谓
基于这点,如果某个位数不是3的倍数,是不是就说明答案在这个位是1,于是有了以下做法

java 复制代码
class Solution {
    public int singleNumber(int[] nums) {
        int ans = 0;//存放结果
        for (int i = 0; i < 32; ++i) {
            int total = 0;//记录该二进制位的值之和
            for (int num: nums) {
                total += ((num >> i) & 1);//右移后取最低位(即为i循环的这位的值)
            }
            if (total % 3 != 0) {//如果这个位所有的值之和不是3的倍数,那么答案这位就是1
                ans |= (1 << i);//那就将1左移到这位,与其进行或运算(低位全为0,或不会改变低位的结果)
            }
        }
        return ans;
    }
}
相关推荐
Yuzhiyuxia6 小时前
【AI Agent面试系列】AI Agent记忆机制知识点1
人工智能·面试·职场和发展
UIU1147 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场7 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi7 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
秋天的怀念_David8 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
碧海银沙音频科技研究院9 小时前
在PC电脑上用Whisper→Marian算法实现离线语音翻译功能
算法·whisper
考研保研资料分享9 小时前
2025公卫保研清华专硕:三校考核、英文读译与择校复盘
面试
niyongsheng9 小时前
3D 装箱算法工程化:数据结构、放置启发式与支撑规则
数据结构·算法·rust
j7~12 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
傅科摆 _ py13 小时前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法