码迷,mamicode.com
首页 > 其他好文 > 详细

Single Number II

时间:2014-08-12 18:26:14      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   io   strong   for   ar   

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?

思路:由于所有元素都出现了三次,只有一个元素出现了一次。通过统计输入序列在二进制表示的每个位上1出现的次数求解该题。对每一位上1累计出现的次数对3取余即可求解出只出现一次的数。使用位运算完成上述操作。

 1 class Solution {
 2 public:
 3     int singleNumber(int A[], int n) {
 4         if( n <= 0 ) { return 0; }
 5         int one = A[0], two = 0;
 6         for( int i = 1; i < n; ++i ) {
 7             two |= one & A[i];
 8             one ^= A[i];
 9             int not_three = ~(two & one);
10             two &= not_three;
11             one &= not_three;
12         }
13         return one;
14     }
15 };

 

Single Number II,布布扣,bubuko.com

Single Number II

标签:style   blog   color   使用   io   strong   for   ar   

原文地址:http://www.cnblogs.com/moderate-fish/p/3907489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!