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

【位运算】只出现⼀次的数字 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.dtcms.com/a/227524.html

相关文章:

  • 【latex】易遗忘的表达
  • esp32 platformio lvgl_gif的使用和踩坑情况
  • Qt OpenGL 3D 编程入门
  • 2 Studying《Effective STL》
  • 使用ArcPy批量处理矢量数据
  • inux系统基本操作命令(系统信息查看)
  • MyBatis04:SpringBoot整合MyBatis——多表关联|延迟加载|MyBatisX插件|SQL注解
  • Linux 基础指令入门指南:解锁命令行的实用密码
  • 常见 Web 安全问题
  • MySQL中的锁
  • ESP32之Linux编译环境搭建流程
  • webfuture:提示“Strict-Transport-Security头未设置”漏洞的解决方法
  • 在树莓派3B上用Python编程完成流水灯实验
  • 【更正补全】edu教育申请通过方案
  • UE5 创建2D角色帧动画学习笔记
  • IO模型IO模型
  • 房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块
  • 计算机组成原理核心剖析:CPU、存储、I/O 与总线系统全解
  • PCIe-Error Detection(一)
  • 花卉目标检测数据集介绍(共 12 类,10490 张图像)
  • ⚡️ Linux grep 命令参数详解
  • JavaSE 字符串:深入解析 String、StringBuilder与 StringBuffer
  • Playwright 测试框架 - Node.js
  • 【算法】分支限界
  • 第二章 AI大模型接入
  • 【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素
  • 密码学:解析Feistel网络结构及实现代码
  • SCAU8642--快速排序
  • 本地部署 DeepSeek R1(最新)【从下载、安装、使用和调用一条龙服务】
  • 迅速止痒的4个方法: 冷敷、冰敷、炉甘石洗剂、薄荷膏