Given an integer array nums
where every element appears three times except for one, which appears exactly once. Find the single element and return it.
You must implement a solution with a linear runtime complexity and use only constant extra space.
Example 1:
Input: nums = [2,2,3,2]
Output: 3
Example 2:
Input: nums = [0,1,0,1,0,1,99]
Output: 99
Constraints:
nums.length
<= 3 * 104nums[i]
<= 231 - 1nums
appears exactly three times except for one element which appears once.
function singleNumber(nums) {
let ones = 0;
let twos = 0;
for (const num of nums) {
ones = (ones ^ num) & ~twos;
twos = (twos ^ num) & ~ones;
}
return ones;
}
看答案的,學習了,本來只會用hashmap,而且也會過ㄏㄏ,只是空間複雜度有差。
Marsgoat4 July, 2023
public class Solution {
public int SingleNumber(int[] nums) {
int once = 0;
int twice = 0;
foreach(int num in nums) {
once = (once ^ num) & ~twice;
twice = (twice ^ num) & ~once;
}
return once;
}
}
看上面的,一開始有想到 XOR,但沒想到怎麼處理出現奇數次
JimJul 5, 2023