Given a non-empty array of integers, every element appears three times except for one, which appears exactly once. Find that single one.
Note
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example
No.1
Input: [2,2,3,2]
Output: 3
No.2
Input: [0,1,0,1,0,1,99]
Output: 99
Code
1 | public int singleNumber(int[] nums) { |
Improvement
- A new number appears - It gets XOR’d to the variable “ones”.
- A number gets repeated(appears twice) - It is removed from “ones” and XOR’d to the variable “twos”.
- A number appears for the third time - It gets removed from both “ones” and “twos”.
1 | public int singleNumber(int[] nums) { |