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

leetcode 260 只出现一次的数字III

一、题目描述

二、解题思路

整体思路:

可以采用位运算的思想,加上运算律a^a=0,0^a=a可以解决这个问题。

具体思路:

(1)首先,将nums数组中的所有数进行异或;

(2)r=r&(-r)来提取出r中最右边的1(其实任意位置的1均可),由异或的运算律a^a=0可知,最右边的1对应的二进位制位的1一定是只出现一次的两个数异或产生的,即这两个数在这一位的二进制数不同;

(3)因此,我们可以根据此二进制位进行分组异或,即可找到两个只出现一次的数。因为a^a=0,0^a=a,所有出现偶数次的数会被成对消除。

三、代码实现

时间复杂度:T(n)=O(n)

空间复杂度:S(n)=O(1)

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {//提取nums所有数异或long long r=0;for(auto x:nums) r=r^x;//提取最右边的1r=r&(-r);int a=0,b=0;//分组异或for(auto x:nums){if((x&r)==0) a^=x;else if((x&r)!=0) b^=x;}return {a,b};}
};

http://www.dtcms.com/a/360582.html

相关文章:

  • 你的数据是如何被保护的?
  • Linux系统的进程管理
  • vue3+vite+ts 发布npm 组件包
  • 查看所有装在c盘软件的方法
  • [知识点记录]SQLite 数据库和MySQL 数据库有什么区别?
  • DuckDB 内嵌分析:ABP 的「本地 OL盘快照」
  • 福彩双色球第2025100期号码推荐
  • 福彩双色球第2025100期数据统计
  • 吴恩达机器学习作业十一:异常检测
  • Docker 容器(二)
  • 机器视觉学习-day15-图像轮廓特征查找
  • Wi-Fi技术——OSI模型
  • 深度学习量化双雄:PTQ 与 QAT 的技术剖析与实战
  • 开源协作白板 – 轻量级多用户实时协作白板系统 – 支持多用户绘图、文字编辑、图片处理
  • globals() 小技巧
  • C++ 模板全览:从“非特化”到“全特化 / 偏特化”的完整原理与区别
  • Prometheus之启用--web.enable-remote-write-receiver
  • 基于muduo库的图床云共享存储项目(三)
  • 前端常见安全问题 + 防御方法 + 面试回答
  • 「数据获取」《中国工会统计年鉴》(1991-2013)(获取方式看绑定的资源)
  • 【人工智能99问】Qwen3简介(33/99)
  • 浅析NVMe协议:DIF
  • 多线程使用场景一(es数据批量导入)
  • 林曦词典|老死不相往来
  • 洛谷p2392kkksc03考前临时抱佛脚 详解(回溯,深度搜索法)
  • 大模型参数到底是什么?
  • CUDA与图形API的深度互操作:解锁GPU硬件接口的真正潜力
  • C++内存序不迷茫:从CPU缓存一致性理解Memory Order
  • 如何将剪贴板内容存为文件?Paste As File支持文本/图片转换
  • 批处理脚本操作 JSON 文件