当前位置:网站首页>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;
}
};
边栏推荐
猜你喜欢
Hinton2022年RobotBrains访谈记录
力扣707-设计链表——链表
Alexa染料标记RNA核糖核酸|RNA-Alexa 514|RNA-Alexa 488|RNA-Alexa 430
小马智行起诉擎天智卡:索赔6000万 彭军称要斗争到底
百利药业IPO过会:扣非后年亏1.5亿 奥博资本是股东
详解AST抽象语法树
一种能有效缓解环境噪声对音频质量干扰的方案
【leetcode】剑指 Offer II 009. 乘积小于 K 的子数组(滑动窗口、双指针)
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
后台图库上传功能
随机推荐
2022 CCF中国开源大会会议通知(第三轮)
危化企业双重预防机制数字化建设进入全面实施阶段
揭秘5名运维如何轻松管理数亿级流量系统
php截取中文字符串实例
ES6--剩余参数
YARN功能介绍、交互流程及调度策略
数学之美 第六章——信息的度量和作用
盘点在线帮助中心对企业能够起到的作用
「学习笔记」高斯消元
MapReduce介绍及执行过程
RNA核糖核酸修饰Alexa 568/[email protected] 594/[email prote
自定义form表单验证
简易电子琴设计(c语言)
Use ControlTemplate or Style from resource file in WPF .cs and find the control
Hinton2022年RobotBrains访谈记录
Matlab paper illustration drawing template No. 42 - bubble matrix diagram (correlation coefficient matrix diagram)
redis常用命令,HSET,XADD,XREAD,DEL等
化算力为战力:宁夏中卫的数字化转型启示录
若依集成browscap读取浏览器用户代理
(十六)51单片机——红外遥控