当前位置:网站首页>leetcode 136. 只出现一次的数字(异或!!)
leetcode 136. 只出现一次的数字(异或!!)
2022-08-03 20:06:00 【会编程的露娜】
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1:
输入: [2,2,1]
输出: 1
示例 2:
输入: [4,1,2,1,2]
输出: 4
思路:使用异或
异或运算有以下三个性质:
- 任何数和 0 做异或运算,结果仍然是原来的数,即 a^0=a 。
- 任何数和本身做异或运算,结果是 0,即 a^a=0 。
- 异或运算满足交换律和结合律,即 a ^ b ^ a=b ^ a ^ a=b ^ (a ^ a)=b ^ 0=b 。
一开始令 int ans=0 ,遍历整个数组都进行一次异或运算,由于出现2次的元素异或2次之后仍然是本身,最后只剩下异或1次的元素,而且由于0和任何数异或都为那个数本身,所以最后只剩下出现一次的数字。
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans=0;
int n=nums.size();
for(int i=0;i<n;++i)
ans^=nums[i];
return ans;
}
};
边栏推荐
猜你喜欢
Statistical machine learning 】 【 linear regression model
RNA核糖核酸修饰RNA-HiLyte FluorTM 405荧光染料|RNA-HiLyte FluorTM 405
async 和 await 原来这么简单
简易电子琴设计(c语言)
JS 内置构造函数 扩展 prototype 继承 借用构造函数 组合式 原型式creat 寄生式 寄生组合式 call apply instanceof
【飞控开发高级教程4】疯壳·开源编队无人机-360 度翻滚
子树的大小
边缘盒子+时序数据库,美的数字化平台 iBuilding 背后的技术选型
力扣707-设计链表——链表
力扣203-移除链表元素——链表
随机推荐
软件测试基本流程有哪些?权威的第三方软件检测机构推荐
LeetCode 899. 有序队列
详解AST抽象语法树
嵌入式分享合集27
dpkg强制安装软件
Reveal how the five operational management level of hundreds of millions of easily flow system
tRNA甲基化偶联3-甲基胞嘧啶(m3C)|tRNA-m3C (3-methylcy- tidine)
云服务器如何安全使用本地的AD/LDAP?
高并发,你真的理解透彻了吗?
8.3模拟赛总结
调用EasyCVR接口时视频流请求出现404,并报错SSL Error,是什么原因?
【飞控开发高级教程6】疯壳·开源编队无人机-AI语音控制
钱江摩托某型号产品ECU货不对版 消费者知情权应如何保障?
149. 直线上最多的点数-并查集做法
力扣203-移除链表元素——链表
盘点在线帮助中心对企业能够起到的作用
net-snmp私有mib动态加载到snmpd
倒计时2天,“文化数字化战略新型基础设施暨文化艺术链生态建设发布会”启幕在即
收藏-即时通讯(IM)开源项目OpenIM-功能手册
Anaconda 虚拟环境迁移