力扣面试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;
    }
}
相关推荐
lecepin1 小时前
AI Coding 资讯 2025-09-17
前端·javascript·面试
闰五月3 小时前
JavaScript作用域与作用域链详解
前端·面试
CoovallyAIHub3 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
顾林海3 小时前
Android编译插桩之AspectJ:让代码像特工一样悄悄干活
android·面试·性能优化
poemyang3 小时前
技术圈的“绯闻女孩”:Gossip是如何把八卦秘密传遍全网的?
后端·面试·架构
进阶的鱼4 小时前
(4种场景)单行、多行文本超出省略号隐藏
前端·css·面试
uhakadotcom4 小时前
在python中,使用conda,使用poetry,使用uv,使用pip,四种从效果和好处的角度看,有哪些区别?
前端·javascript·面试
一直_在路上4 小时前
突发高流量应对之道:Go语言限流、熔断、降级三板斧
面试·go
CoovallyAIHub4 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
吃饺子不吃馅4 小时前
为什么SnapDOM 比 html2canvas截图要快?
前端·javascript·面试