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

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.xdnf.cn/news/19275.html

相关文章:

  • COLA:大型语言模型高效微调的革命性框架
  • 免费电脑文件夹加密软件
  • 基于Adaboost集成学习与SHAP可解释性分析的分类预测
  • 【K8s】整体认识K8s之存储--volume
  • 在win服务器部署vue+springboot + Maven前端后端流程详解,含ip端口讲解
  • Transformer架构三大核心:位置编码(PE)、前馈网络(FFN)和多头注意力(MHA)。
  • 学习Python中Selenium模块的基本用法(12:操作Cookie)
  • TFS-2005《A Possibilistic Fuzzy c-Means Clustering Algorithm》
  • 使用 Python 自动化检查矢量面数据的拓扑错误(含导出/删除选项)
  • 算法题(196):最大异或对
  • 特殊符号在Html中的代码及常用标签格式的记录
  • Qt组件布局的经验
  • 线程池、锁策略
  • 机器视觉opencv教程(四):图像颜色识别与颜色替换
  • Linux中的ss命令
  • kotlin - 2个Activity实现平行视图,使用SplitPairFilter
  • 网络流量分析——使用Wireshark进行分析
  • Shell脚本编程——变量用法详解
  • Ruoyi-vue-plus-5.x第二篇MyBatis-Plus数据持久层技术:2.2 分页与性能优化
  • DAY17-新世纪DL(DeepLearning/深度学习)战士:Q(机器学习策略)2
  • AI 应用 图文 解说 (二) -- 百度智能云 ASR LIM TTS 语音AI助手源码
  • 自定义AXI_PWM_v1.0——ZYNQ学习笔记15
  • Spring Task快速上手
  • Maven学习笔记01
  • 【stm32】对射式红外传感器计次以及旋转编码器计次
  • SpringBoot 自研运行时 SQL 调用树,3 分钟定位慢 SQL!
  • 用产品经理的思维,重构AI时代的增长Playbook
  • 企业数据湖:从混沌到秩序的分层设计与治理策略
  • 11.1.5 实现文件删除,共享和共享下载排行榜
  • 分布式测试平台ITP:让自动化测试更高效、更稳定