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)\)