# [137. Single Number II](https://leetcode.com/problems/single-number-ii) [中文文档](/solution/0100-0199/0137.Single%20Number%20II/README.md) ## Description

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.

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 * 104`
• `-231 <= nums[i] <= 231 - 1`
• Each element in `nums` appears exactly three times except for one element which appears once.

Follow up: Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

## Solutions ### **Python3** ```python class Solution: def singleNumber(self, nums: List[int]) -> int: bits =  * 32 for num in nums: for i in range(32): bits[i] += (num & 1) num >>= 1 res = 0 for i in range(32): if bits[i] % 3 != 0: res |= (1 << i) return res if bits % 3 == 0 else ~(res ^ 0xffffffff) ``` ### **Java** ```java class Solution { public int singleNumber(int[] nums) { int[] bits = new int; for (int num : nums) { for (int i = 0; i < 32; ++i) { bits[i] += (num & 1); num >>= 1; } } int res = 0; for (int i = 0; i < 32; ++i) { if (bits[i] % 3 == 1) { res |= (1 << i); } } return res; } } ``` ### **...** ``` ```