标签:
题意:给一个序列,其中只有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 };
(2)用位运算。
LeetCode Single Number II 单元素2
标签:
原文地址:http://www.cnblogs.com/xcw0754/p/4669023.html