Leetcode: single-number && single-number-ii
2018-01-07 10:47
369 查看
Given an array of integers, everyelement appears twice except for one. Find that single one.
Note: Your algorithm should have a linear runtime complexity.Could you implement it without using extra memory?
思路:0^a = a。a^a = 0。a^b^a = a^a^b = b^a^a = b。
由上述公式可知,偶数个相同的数相异或为0,任何数和0异或为其本身,所以只需将数组里的数异或一次,最后得到的数就是唯一出现的数。
代码:
int singleNumber(int A[], int n) {
int num=0;
for(int i=0; i!=n; i++)
num ^= A[i];
return num;
}
Leetcode: single-number-ii
Given an array of integers, everyelement appears three times except for one. Find that single one.
Note: Your algorithm should have a linear runtime complexity.Could you implement it without using extra memory?
思路:将数组的每个数按位计算每位出现的次数,因为数组里的数除了一个只出现一次,其它的数都出现3次,那么计算每个数的每位出现的次数不是3的倍数就是mod 3为1。mod 3为1的那一位必定是只出现一次的数的那一位。
代码:
Note: Your algorithm should have a linear runtime complexity.Could you implement it without using extra memory?
思路:0^a = a。a^a = 0。a^b^a = a^a^b = b^a^a = b。
由上述公式可知,偶数个相同的数相异或为0,任何数和0异或为其本身,所以只需将数组里的数异或一次,最后得到的数就是唯一出现的数。
代码:
int singleNumber(int A[], int n) {
int num=0;
for(int i=0; i!=n; i++)
num ^= A[i];
return num;
}
Leetcode: single-number-ii
Given an array of integers, everyelement appears three times except for one. Find that single one.
Note: Your algorithm should have a linear runtime complexity.Could you implement it without using extra memory?
思路:将数组的每个数按位计算每位出现的次数,因为数组里的数除了一个只出现一次,其它的数都出现3次,那么计算每个数的每位出现的次数不是3的倍数就是mod 3为1。mod 3为1的那一位必定是只出现一次的数的那一位。
代码:
int singleNumber(int A[], int n) { int tmp=1; int num=0; for(int i=0; i!=32; i++) { int count=0; for(int j=0; j!=n; j++) { if(A[j]&(tmp<<i)) count++; } if(count%3) num |= (tmp<<i); } return num; }
相关文章推荐
- [LeetCode]Single Number, Single Number II & Single Number III
- LeetCode Single Number I & II
- LeetCode解题报告—— Sum Root to Leaf Numbers & Surrounded Regions & Single Number II
- [Leetcode]Single Number && Single Number II
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- leetcode -day8 Copy List with Random Pointer & Single Number I II
- 【leetcode】Single Number && Single Number II(ORZ 位运算)
- 【LeetCode】Single Number I & II & III
- 【LeetCode】136 & 137 & 260 - Single Number I & II &III
- LeetCode:Single Number I && II
- LeetCode:Single Number I & II & III
- LeetCode: Single Number I && II
- 【leetcode】Single Number & Single Number II
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- Leetcode---Single Number I & II
- leetcode--single_number&&single_number_II
- [Leetcode]Single Number I&II
- leetcode -- Single Number II &III- 位操作,没有理解
- 【leetcode】Single Number && Single Number II
- [Leetcode] #136#137#260 Single Number I & II & III