最近、この流行状況は家庭で水をかき立てました。この問題は、アレイに1回だけ現れる数を見つけることで
あり、時間の複雑さO(n)を必要とし、ストレージ用の新しいスペースを開きません。
タイトル:一度だけ表示される番号
は、建志オファーで一度行われ、並べ替えられ、番号が1つしかない人は一目でわかります。
しかし、時間の複雑さはO(logN + N)です。
今回のアイデアはXOR演算を使用することですXOR演算の重要な概念は次のとおりです(Nは任意の数です):
- 0 xor N = N
- N xor N = 0
- XOR演算は、交換法則と組み合わせ法則を満たし
ます。つまり、a xor b xor a =(a xor a)xor b = 0 xor b = b
だからこれを見ると突然恥ずかしくて恥ずかしそうに記録してしまい...
class Solution {
public int singleNumber(int[] nums) {
int xor = 0;
for(int i: nums){
xor ^= i;
}
return xor;
}
}