当前位置: 首页 > article >正文

Leetcode面试经典150题-137.只出现一次的数字II

  解法都在代码里,不懂就留言或者私信,比136题稍微难一点点

如果没看过我写的136题的先看看

Leetcode面试经典150题-136.只出现一次的数字-CSDN博客

class Solution {
    /**这个题相对136题是有一点点的难,但是还行,基本解题思路如下:
    既然其他的数字都出现了三次,也就是说这些出现三次的数所有的位上的1都能被3整除
    我们看以下每一位上1的数量%3就是我们这个出现一次的元素的这个位置的值,如果是0,拿答案当前位就是0,如果是1,当前位就是1
    然后把每一位的答案拼接起来就是答案 */
    public int singleNumber(int[] nums) {
        /**当前是哪一位*/
        int curDigit = 0;
        /**答案存放的遍历*/
        int ans = 0;
        while(curDigit <= 31) {
            int countOfCurDigit = 0;
            /**统计所有数中当前位的1的数量 */
            for(int num : nums) {
                /**取curDigit位的1 */
                countOfCurDigit += ((num >> curDigit) & 1); 
            }
            /**取余之后就是当前数的当前位(1或者0) */
            ans |= (countOfCurDigit % 3) << curDigit;
            /**挪到下一位继续 */
            curDigit ++;
        }
        return ans;
    }
}

运行结果,就那样吧,可以尝试把循环改变以下提高,但是我觉得没这必要,算法的东西就是这么多,再优化跟算法无关,都是coding问题


http://www.kler.cn/a/291357.html

相关文章:

  • 《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人
  • 集群聊天服务器(7)数据模块
  • C#获取视频第一帧_腾讯云媒体处理获取视频第一帧
  • 退款成功订阅消息点击后提示订单不存在
  • 游戏引擎学习第12天
  • Relaxcert SSL证书申请与自动续签之IIS
  • 深度孤立森林 Deep Isolation Forest论文翻译(上)
  • 第二百一十六节 JSF教程 - JSF基本标签、JSF表单文本框示例
  • ffmpeg音视频开发从入门到精通——ffmpeg实现音频抽取
  • 【R语言速通】2.循环和条件判断
  • verilog仿真激励
  • TCP协议 配合 Wireshark 分析数据
  • 开源还是封闭?人工智能的两难选择
  • 人工智能关键技术怎么清晰的划分
  • 云电脑超越传统PC——再谈公有云的新市场
  • 基于Java的在线文献检索系统
  • IP网络协议
  • stm32 8080时序驱动lcd屏幕
  • 仕考网:公务员和事业编的区别
  • matlab二维热传导显示有限差分法计算(代码)
  • 活动系统开发之采用设计模式与非设计模式的区别-需求整理
  • 使用FFmpeg实现简单的拉流、推流、视频解码Demo
  • 微服务中的服务降级与熔断机制
  • 搜维尔科技:使用Geomagic Touch X 对机械臂进行远程遥操作
  • mysql 使用 general 开启SQL跟踪功能
  • Knife4j:为Spring Boot API赋能的文档生成器