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

【位运算】只出现⼀次的数字 II(medium)

只出现⼀次的数字 II(medium)

  • 题⽬描述:
  • 解法(⽐特位计数):
  • 代码:

题⽬链接:137. 只出现⼀次的数字 II

题⽬描述:

给你⼀个整数数组 nums ,除某个元素仅出现 ⼀次 外,其余每个元素都恰出现 三次 。请你找出并返
回那个只出现了⼀次的元素。
你必须设计并实现线性时间复杂度的算法且不使⽤额外空间来解决此问题。
⽰例 1:
输⼊:nums = [2,2,3,2]
输出:3
⽰例 2:
输⼊:nums = [0,1,0,1,0,1,99]
输出:99
提⽰:
1 <= nums.length <= 3 * 104
-231 <= nums[i] <= 231 - 1
nums 中,除某个元素仅出现 ⼀次 外,其余每个元素都恰出现 三次

解法(⽐特位计数):

算法思路:
设要找的数位 ret 。
由于整个数组中,需要找的元素只出现了「⼀次」,其余的数都出现的「三次」,因此我们可以根据所有数的「某⼀个⽐特位」的总和 %3 的结果,快速定位到 ret 的「⼀个⽐特位上」的值是0 还是 1 。
这样,我们通过 ret 的每⼀个⽐特位上的值,就可以将 ret 给还原出来

代码:

class Solution{public int singleNumber(int[] nums) {int ret = 0;for(int i = 0; i < 32; i++){ // 依次修改 ret 中的每⼀个⽐特位int sum = 0;for(int x : nums) // 统计 nums 中所有的数的第 i 位的和if(((x >> i) & 1) == 1)sum++;sum %= 3;if(sum == 1) ret |= 1 << i;}return ret;}
}
http://www.xdnf.cn/news/10655.html

相关文章:

  • 1. 前言与安装pytorch、d2l
  • 【Java学习笔记】异常
  • Chapter 10 Inductive DC–DC Converters
  • MCP (模型上下文协议):AI界的“USB-C”标准,开启大模型应用新纪元
  • C语言基础(10)【二维数组 字符数组 字符串相关操作】
  • 代码随想录算法训练营第十一天 | 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素、栈与队列总结
  • 光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)
  • 用“照片放大/缩小”来通俗理解多尺度
  • QT入门学习(二)---继承关系、访问控制和变量定义
  • Dockerfile常用指令介绍
  • 【Redis】Set 集合
  • Python列表、字典、元组、集合
  • 推荐一款使用html开发桌面应用的工具——mixone
  • 39. 组合总和【 力扣(LeetCode) 】
  • 从万物互联到万体智联:论智能体互联网带来的产业革命
  • 可视化大屏如何制作
  • SQL快速入门【转自牛客网】
  • 强人工智能 vs 弱人工智能:本质区别与未来展望
  • CppCon 2014 学习:Defensive Programming Done Right.
  • 嵌入式Linux 期末复习指南(下)
  • Java递归编程中的StackOverflowError问题分析与解决方案
  • 软件测评师教程 第9章 基于质量特性的测试与评价 笔记
  • 新版智慧社区(小区)智能化弱电系统解决方案
  • 记录一次由打扑克牌测试国内各家大模型的经历
  • 序列搜索策略
  • 探秘 Minimax:AI 领域的创新先锋
  • CangjieMagic 智能体框架嵌入式系统实测:以树莓派 4B 为例
  • 【Redis技术进阶之路】「系统架构系列中篇」高可用之Master-Slave主从架构的复制问题(分析旧版点制功能)
  • rabbitmq Direct交换机简介
  • K-匿名模型