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

LeetCode Single Number II 单元素2

时间:2015-07-23 00:20:35      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

 

 

题意:给一个序列,其中只有1个元素只出现1次,其他的都一定出现3次。问这个出现一次的元素是多少?

思路:

(1)全部元素拆成二进制,那么每个位上的1的个数应该是3的倍数,如果不是3的倍数,则ans的这个位肯定为1。

  22ms

技术分享
 1 class Solution {
 2 public:
 3     int singleNumber(vector<int>& nums) {
 4         int times[32]={0};
 5         for(int i=0; i<nums.size(); i++)
 6             for(int j=0; j<=31; j++)
 7                 if( 1&(nums[i]>>j) )
 8                     times[j]++;
 9 
10         int ans=0;
11         for(int i=31; i>=0; i--)
12         {
13             ans<<=1;
14             if(times[i]%3 )    ans|=1;//如果有余数,则保障最低位为1
15         }
16         return ans;
17     }
18 };
AC代码

 

 

(2)用位运算。

 

LeetCode Single Number II 单元素2

标签:

原文地址:http://www.cnblogs.com/xcw0754/p/4669023.html

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