AlgoMaster Logo

Single Number III

nums=[1, 2, 1, 3, 2, 5]
1class Solution {
2    public int[] singleNumber(int[] nums) {
3        // Step 1: XOR all numbers
4        int xor = 0;
5        for (int num : nums) {
6            xor ^= num;
7        }
8
9        // Step 2: Find rightmost set bit
10        int diff = xor & (-xor);
11
12        // Step 3: Separate into two groups and XOR
13        int[] result = new int[2];
14        for (int num : nums) {
15            if ((num & diff) == 0) {
16                result[0] ^= num; // Group 0
17            } else {
18                result[1] ^= num; // Group 1
19            }
20        }
21
22        return result;
23    }
24}
0 / 29
121325012345