> [!META]- Inline Metadata > [tags:: #career #concepts/programming/bit-manipulation] > [project group:: neetcode 150] > [difficulty:: done] > [status:: to begin] > [link::] > [up:: [[Leetcode MOC]]] ## Problem Given a **non-empty** array of integers `nums`, every element appears _twice_ except for one. Find that single one. You must implement a solution with a linear runtime complexity and use only constant extra space. **Example 1:** **Input:** nums = [2,2,1] **Output:** 1 **Example 2:** **Input:** nums = [4,1,2,1,2] **Output:** 4 **Example 3:** **Input:** nums = [1] **Output:** 1 **Constraints:** - `1 <= nums.length <= 3 * 104` - `-3 * 104 <= nums[i] <= 3 * 104` - Each element in the array appears twice except for one element which appears only once. ## Solution ### Mine #### Python ```python class Solution: def singleNumber(self, nums: List[int]) -> int: unique = nums[0] for num in nums[1:]: unique ^= num return unique ``` #### Rust ### LC's ## Things I Learned ### Neetcode Video Using the example input `[4, 1, 2, 1, 2]`. Because this is bit manipulation (the constraints are a hint), we want to convert each number to its binary representation, then do an XOR to find the one standout. ![[Pasted image 20230130214835.png]] Take whole thing and XOR. Why? $2 \oplus 2 = 0$, so all pairs with 0 out, leaving the unique value. ## Scratchpad