Single Number II - leetcode
2013-10-03 15:38
399 查看
Single Number II
AC Rate: 11/62My Submissions
Given an array of integers, every element 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?
思路是:利用一个33位的数组保存n个数的每个二进制位1的个数,然后对其模3 , 这样最后剩下的就是出现一次的那个数了,注意第32位保存的正负数的个数,同样也要模3,最后决定结果的正负,同时要考虑溢出的情况。
代码如下
class Solution { public: int singleNumber(int A[], int n) { // Note: The Solution object is instantiated only once and is reused by each test case. if ( n < 4) return A[0]; short tmp[33] = {0}; for (int i = 0; i < n; ++i) { unsigned int t = 0; if (A[i] < 0) { t = -A[i]; tmp[32] += 1; tmp[32] %= 3; } else { t = A[i]; } int j = 0; while (t) { tmp[j] += t & 0x01; // cout << (t & 0x01) << " "; tmp[j] %= 3; t >>= 1; ++j; } } unsigned int key = 0; for (int i = 0; i < 32; ++i) { if (tmp[i]) key += (1 << i); } return tmp[32] == 0 ? key : -key; } };
相关文章推荐
- LeetCode——Single Number II(找出数组中只出现一次的数2)
- [LeetCode]Single Number, Single Number II & Single Number III
- 【leetcode刷题笔记】Single Number II
- LeetCode137—Single Number II
- 【leetcode】Single Number & Single Number II
- leetcode-Single Number II
- LeetCode - Single Number II
- [LeetCode] 103: Single Number II
- LeetCode - Single Number II
- [leetcode] Single Number II
- Leetcode 137 Single Number II 仅出现一次的数字
- [LeetCode 137] Single Number II(位运算的巧妙运用初级篇)
- [LeetCode] Single Number II
- LeetCode Single Number, Single Number II
- leetcode第137题-Single Number II
- LeetCode 137 Single Number II
- [LeetCode] Single Number II
- [题解][LeetCode][Single Number II]
- leetcode136:single number I&II 及拓展
- leetcode single number II