欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

找到数组中只出现一次的元素

程序员文章站 2024-03-16 17:41:22
...

找到数组中只出现一次的元素,其他元素都出现2次

public static int singleNumber(int[] nums) {
        int res = nums[0];
        for (int i = 1; i < nums.length; i++)
            res = res ^ nums[i];
        // A ^ A = 0
        // A ^ 0 = A
        return res;
}

找到数组中只出现一次的元素,其他元素出现3次

public static int singleNumber(int[] nums) {
    int len = nums.length, result = 0;
    // int整型占32bit
    for (int i = 0; i < 32; i++) {
        int sum = 0; // sum统计数组元素第i位为1的个数总和
        for (int j = 0; j < len; j++) {
            sum += (nums[j] >> i) & 1;
        }
        result |= (sum % 3) << i;
    }
    return result;
}