137. Single Number II
https://leetcode.com/problems/single-number-ii/description/
除了一个数出现一次外其它数出现3次,找出出现一次的数。针对所有数出现K次,只有一个数num出现M(M%K !=0)次的问题可以对每一位把该位的值加起来然后%K,得到M个num在该位的和 %K的结果,再除以M % K就是num在该位的值。
/*
* @lc app=leetcode id=137 lang=cpp
*
* [137] Single Number II
*/
// @lc code=start
class Solution {
public:
int singleNumber(vector<int>& nums) {
int res = 0;
for (int i = 0; i < 32; ++i) {
int r = 0;
for (const auto num : nums) {
r += (num >> i) & 1;
}
res |= (r % 3) << i;
}
return res;
}
};
// @lc code=end
Last updated
Was this helpful?