leetcode@ [136/137] Single Number & Single Number II
https://leetcode.com/problems/single-number/
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
class Solution { public: int singleNumber(vector<int>& nums) { if(nums.size() == 1) return nums[0]; vector<int> bitNums(32, 0); int res = 0; for(int i=0;i<bitNums.size();++i) { for(int j=0;j<nums.size();++j) { bitNums[i] += (nums[j] >> i) & 1; } res |= (bitNums[i] % 2) << i; } return res; } };
https://leetcode.com/problems/single-number-ii/
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?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
class Solution { public: int singleNumber(vector<int>& nums) { if(nums.size() == 1) return nums[0]; vector<int> bitNums(32, 0); int res = 0; for(int i=0;i<32;++i) { for(int j=0;j<nums.size();++j) { bitNums[i] += (nums[j] >> i) & 1; cout << ((nums[j] >> i) & 1) << " "; } cout<<endl; } for(int i=0;i<bitNums.size();++i) { res += (bitNums[i] % 3) << i; } return res; } };