编辑代码

import java.util.Scanner;

public class FindSingleNumber {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 数组长度
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = sc.nextInt(); // 输入数组元素
        }

        System.out.println(singleNumber(nums));
    }

    public static int singleNumber(int[] nums) {
        int result = 0;
        // 对每一位统计出现次数
        for (int i = 0; i < 32; i++) {
            int sum = 0;
            for (int num : nums) {
                // 统计每个数字在第i位是否为1
                if (((num >> i) & 1) == 1) {
                    sum++;
                }
            }
            // 如果该位的1的个数不是3的倍数,说明单独的那个数在这一位上是1
            if (sum % 3 != 0) {
                result |= (1 << i);
            }
        }
        return result;
    }
}