--- tags: data_structure_python --- # Single Number <img src="https://img.shields.io/badge/-easy-brightgreen"> Given a **non-empty** array of integers, every element appears twice except for one. Find that single one. **Note:** Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory? **Example 1:** ``` Input: [2,2,1] Output: 1 ``` **Example 2:** ``` Input: [4,1,2,1,2] Output: 4 ``` # Solution ## Solution 1: Naive approach ```python= class Solution: def singleNumber(self, nums: List[int]) -> int: dic = {} for elt in nums: if elt in dic: dic[elt] += 1 else: dic[elt] = 1 for elt in dic.keys(): if dic[elt] == 1: return elt ``` ## Solution 2: XOR gate approach ```python= class Solution: def singleNumber(self, nums: List[int]) -> int: #O(n) res = 0 for elt in nums: res ^= elt return res ```