一、题目地址
https://leetcode-cn.com/problems/WGki4K/
二、具体分析
1、具体代码
/**
* @param {number[]} nums
* @return {number}
*/
var singleNumber = function(nums) {
let n = nums.length;
let res = 0;
for(let i=0; i<32; i++) {
let count = 0;
let mask = (1 << i);
for(let i=0; i<n; i++) {
if((nums[i] & mask) !== 0) {
count++;
}
}
res |= (count % 3) << i;
}
return res;
};
2、复杂度分析
(1)时间复杂度:O(n log C),其中 n 是数组的长度,C是元素的数据范围,在本题中 log C=log 2^32 = 32,也就是我们需要遍历第 0∼31 个二进制位。
(2)空间复杂度:O(1)。