Skip to content

Files

Latest commit

b102c50 · Jan 16, 2024

History

History
49 lines (40 loc) · 1.2 KB

File metadata and controls

49 lines (40 loc) · 1.2 KB

137. Single Number II

Given an integer array nums where every element appears three times except for one, which appears exactly once. Find the single element and return it.

You must implement a solution with a linear runtime complexity and use only constant extra space.

Example 1:

Input: nums = [2,2,3,2]
Output: 3

Example 2:

Input: nums = [0,1,0,1,0,1,99]
Output: 99

Constraints:

  • 1 <= nums.length <= 3 * 104
  • -231 <= nums[i] <= 231 - 1
  • Each element in nums appears exactly three times except for one element which appears once.

Solutions (Rust)

1. Solution

impl Solution {
    pub fn single_number(nums: Vec<i32>) -> i32 {
        let mut bitcount = [0; 32];
        let mut ret = 0;

        for num in &nums {
            for i in 0..32 {
                if (num >> i) & 1 == 1 {
                    bitcount[i] += 1;
                }
            }
        }

        for i in 0..32 {
            if bitcount[i] % 3 == 1 {
                ret |= 1 << i;
            }
        }

        ret
    }
}