[137. Single Number II](https://leetcode.com/problems/single-number-ii/) ### 題目描述 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**: * 1 <= `nums.length` <= 3 * 10^4^ * -2^31^ <= `nums[i]` <= 2^31^ - 1 * Each element in `nums` appears exactly **three times** except for one element which appears **once**. ### 解答 #### Javascript ```javascript= 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,而且也會過ㄏㄏ,只是空間複雜度有差。 > [name=Marsgoat][time=4 July, 2023] #### C# ```csharp= 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,但沒想到怎麼處理出現奇數次 > [name=Jim][time=Jul 5, 2023] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)