Problema do Algoritmo Clássico da Operação XOR - Números que aparecem apenas uma vez

Qualquer número é XORed, e o resultado ainda é o número original, ou seja, a⊕0=a.

Qualquer número é XOR com ele mesmo, e o resultado é 0, ou seja, a⊕a=0.

A operação XOR satisfaz a lei comutativa e a lei associativa, ou seja, a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b.

136. Números que ocorrem apenas uma vez

Dada uma matriz não vazia de inteiros, cada elemento aparece duas vezes, exceto para um determinado elemento que aparece apenas uma vez. Encontre o elemento que aparece apenas uma vez.
Explicação:
Seu algoritmo deve ter complexidade de tempo linear. Você pode fazer isso sem usar espaço extra?
Exemplo 1:
Entrada: [2,2,1]
Saída: 1
Exemplo 2:
Entrada: [4,1,2,1,2]
Saída: 4

class Solution {
    
    
    public int singleNumber(int[] nums) {
    
    
        int single = 0;
        for (int num : nums) {
    
    
            // 把所有的数组的所有元素异或起来,两两相同的都异或为0,
            // 那么结果只剩下孤单的那一个元素
            single ^= num; 
        }
        return single;
    }
}

simplificar:

class Solution {
    
    
    // 简化
    public int singleNumber(int[] nums) {
    
    
        for (int i = 1; i < nums.length; i++) {
    
    
            nums[0] ^= nums[i];
        }
        return nums[0];
    }
}

Acho que você gosta

Origin blog.csdn.net/Xidian2850/article/details/124938798
Recomendado
Clasificación