Single Number
来源:互联网 发布:新疆如何绕过网络管制 编辑:程序博客网 时间:2024/06/07 03:33
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.
0 0
- Single Number
- single number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- single number
- Single Number
- Single Number
- Single Number
- 最短路径
- 2016-6-20 杂感
- AndroidStudio 快捷使用
- MySQL命令行导出数据库
- 第十六周上机实践项目2(2):阅读程序
- Single Number
- Ubuntu14.04 LTS 下安装IntelliJ IDEA问题小结
- python发送邮件
- 运算符重载的函数(2)
- USACO 2010 Mar Gold 1.Great Cow Gathering 树形dp
- JS对象
- 第十六周上机实践项目3(1):阅读程序
- Mybits Demo
- Android开发教程(九)ProgressBar