LintCode: Single Number II
一篇解析比较详细的文章:http://www.acmerblog.com/leetcode-single-number-ii-5394.html
C++
解法(1)
求出每个比特位的数目,然后%3,如果这个比特位只出现1次,那么这比特位就会余1,否则就会整除。
把每个余下的比特位求出来,就知道是哪个数只出现1次了。
1 class Solution { 2 public: 3 /** 4 * @param A : An integer array 5 * @return : An integer 6 */ 7 int singleNumberII(vector<int> &A) { 8 // write your code here 9 int count[32] = {0}; 10 int res = 0; 11 for (int i = 0; i < 32; i++) { 12 for (auto &v : A) { 13 count[i] += (v >> i) & 1; 14 } 15 res |= ((count[i] % 3) << i); 16 } 17 return res; 18 } 19 };
解法(2)
表示看不懂。
找我内推: 字节跳动各种岗位
作者:
ZH奶酪(张贺)
邮箱:
cheesezh@qq.com
出处:
http://www.cnblogs.com/CheeseZH/
*
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。