Single Number
2016-06-20 19:29
253 查看
Single Number:
时间复杂度O(n),不能用额外的存储空间,自己思考实在想不出来,看答案用到了异或运算:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int result = 0;
for (int i = 0; i<nums.size(); i++)
{
result ^=(int)(nums[i]);
}
return result;
}
};
网上找到解释,异或运算是可以交换位置的:
(2^1^4^5^2^4^1) => ((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5
完全不明白是怎么交换位置的,后来想到参加异或运算的两个数据,按二进制位进行“异或”运算,比如:
01^11^01^11^10 = 10^10^10 = 00^10 = 10这样最终结果就是只出现了一次的 10.
时间复杂度O(n),不能用额外的存储空间,自己思考实在想不出来,看答案用到了异或运算:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int result = 0;
for (int i = 0; i<nums.size(); i++)
{
result ^=(int)(nums[i]);
}
return result;
}
};
网上找到解释,异或运算是可以交换位置的:
(2^1^4^5^2^4^1) => ((2^2)^(1^1)^(4^4)^(5)) => (0^0^0^5) => 5
完全不明白是怎么交换位置的,后来想到参加异或运算的两个数据,按二进制位进行“异或”运算,比如:
01^11^01^11^10 = 10^10^10 = 00^10 = 10这样最终结果就是只出现了一次的 10.
相关文章推荐
- RtlZeroMemory
- 图描述之:流程图
- HDU 1269 迷宫城堡
- 装饰者模式 详解
- 炒土豆丝
- 数学建模系列- 解决Matlab读取Excel文件报错:Could not start Excel server for import问题
- C++之cin.ignore, cin.peek, cin.putback
- Xcode 7.3 cannot create __weak reference in file using manual reference counting
- Boost之时间处理(timer库)
- 第十六周上机实践项目1(2):阅读程序
- Mybits Demo
- NKOI 3695 清洁机器人
- 4-1编程挑战
- Android开发笔记(九)ProgressBar
- 运算符重载的函数(2)
- USACO 2010 Mar Gold 1.Great Cow Gathering 树形dp
- 高德地图——标记
- 利用OSSIM收集分析远程apache日志(视频教程)
- Ubuntu14.04 LTS 下安装IntelliJ IDEA问题小结
- MySQL命令行导出数据库