136. Single Number

Description

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 * 10^4
  • -3 * 10^4 <= nums[i] <= 3 * 10^4
  • Each element in the array appears twice except for one element which appears only once.

Solution

Tags: Bit Manipulation

Explanation

For any number n, n xor n === 0 since 1 xor 1 === 0 and 0 xor 0 === 0.

Code (Rust)

impl Solution {
    pub fn single_number(nums: Vec<i32>) -> i32 {
        nums.into_iter().fold(0, |acc, num| acc ^ num)
    }
}

Complexity

  • n is length of nums

Time Complexity

  • \(T(n) = \Theta(n)\)

Space Complexity

  • \(S(n) = O(1)\)