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?
解题思路
class Solution {
public:
int singleNumber(vector<int>& nums) {
if (nums.size() == 0) return 0;
int n = nums.size();
int bitNum[32] = {0};
int ans = 0;
for (int i = 0; i < 32; ++i) {
for (int j = 0; j < n; ++j) {
if ((nums[j] >> i) & 1) {
bitNum[i]++;
}
}
ans |= ((bitNum[i] % 3) << i);
}
return ans;
}
};
本文介绍了一种解决SingleNumberII问题的方法,即在一个整数数组中,除了一个数只出现一次外,其余每个数都出现了三次。文章提供了一个线性时间复杂度的算法,并通过位操作实现了不使用额外内存的目标。
462

被折叠的 条评论
为什么被折叠?



