Single Number
2015-07-19 18:35
330 查看
题目描述
链接地址
解法
算法解释
Example
Given [1,2,2,1,3,4,3], return 4
1、性质
0 ^ 1 = 1
0 ^ 0 = 0
1 ^ 1 = 0
2、满足结合律:
a ^ b = b ^ a;
3、满足交互律:
a ^ ( b ^ c) = (a ^ b) ^ c;
因为异或运算满足结合律和交换律,并且相同元素的异或运算结果为0,所以当把所有元素抑或后,最后的结果就是那个不同元素
链接地址
解法
算法解释
题目描述
Given 2*n + 1 numbers, every numbers occurs twice except one, find it.Example
Given [1,2,2,1,3,4,3], return 4
链接地址
http://www.lintcode.com/en/problem/single-number/解法
int singleNumber(vector<int> &A) { // write your code here if (A.size() == 0) { return 0; } int ret = A[0]; for (int i = 1; i < A.size(); i++) { ret = ret ^ A[i]; } return ret; }
算法解释
异或运算具有如下性质:1、性质
0 ^ 1 = 1
0 ^ 0 = 0
1 ^ 1 = 0
2、满足结合律:
a ^ b = b ^ a;
3、满足交互律:
a ^ ( b ^ c) = (a ^ b) ^ c;
因为异或运算满足结合律和交换律,并且相同元素的异或运算结果为0,所以当把所有元素抑或后,最后的结果就是那个不同元素
相关文章推荐
- Lintcode解题笔记 - 岛屿的个数
- 20150708 lintcode 总结 Binary Tree Maximum Path Sum Show result *****
- 20150708 lintcode 总结 Minimum Path Sum
- 20150708 lintcode 总结 Binary Search Tree Iterator
- 20150707 lintcode 总结 Search Range in Binary Search Tree
- 20150624 lintcode 总结 binary-tree-level-order-traversal **
- 20150624 lintcode 总结 Lowest Common Ancestor
- 20150624 lintcode 总结 Balanced Binary Tree
- Lintcode(1)-两个字符串是变位词
- Lintcode(2)-比较字符串
- Lintcode(3)-字符串查找
- Lintcode(4)-乱序字符串
- Lintcode(5)-最长公共子串
- Lintcode(6)-最长公共前缀
- Lintcode(7)-删除元素
- #LintCode# Binary Search
- Nth to Last Node in List
- Partition List
- Remove Duplicates from Sorted List II
- LintCode刷题之路(一)