当前位置:网站首页>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;
}
};
边栏推荐
猜你喜欢
随机推荐
高效目标检测:动态候选较大程度提升检测精度(附论文下载)
【飞控开发高级教程3】疯壳·开源编队无人机-定高、定点、悬停
演讲议题及嘉宾重磅揭晓,TDengine 开发者大会推动数据技术“破局”
嵌入式分享合集27
Alexa染料标记RNA核糖核酸|RNA-Alexa 514|RNA-Alexa 488|RNA-Alexa 430
若依集成browscap读取浏览器用户代理
建模该从哪一步开始?给你分析,给零基础的你一些学习建议
从腾讯阿里等大厂出来创业搞 Web3、元宇宙的人在搞什么
利用 rpush 和 blpop 实现 Redis 消息队列
php根据两点经纬度计算距离
一种能有效缓解环境噪声对音频质量干扰的方案
利用net-snmp的库实现snmpget,snmpset
【leetcode】剑指 Offer II 009. 乘积小于 K 的子数组(滑动窗口、双指针)
LeetCode 622. 设计循环队列
tRNA-m5C转运RNA(tRNA)修饰5-甲基胞嘧啶(m5C)|tRNA修饰m1Am2A (2-methyladenosine)
群辉查看硬盘存储占用的方式
亚马逊云科技 Build On 2022 - AIot 第二季物联网专场实验心得
盲埋孔PCB叠孔设计的利与弊
头条服务端一面经典10道面试题解析
Auto.js实现朋友圈自动点赞









