> [!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