最もホットな質問100の質問136:
最初にコードを貼り付けます。
class Solution {
public int singleNumber(int[] nums) {
//异或
int ans = 0;
for(int i = 0; i < nums.length;i++){
ans = ans ^ nums[i];
}
return ans;
}
}
問題解決のアイデア:
この問題を解決するには、XORを使用する必要があります。XORアルゴリズムは次のように準拠しています。
したがって、配列の1つの要素のみが単一で、他の要素が2回出現する場合、XOR演算の可換法則と結合率に準拠します。例:1 ^ 2 ^ 2 ^ 3 ^ 3 ^ 4 ^ 4 = 1; 2 ^ 1 ^ 3 ^ 2 ^ 3 = 1;
したがって、配列を1回トラバースするだけで、毎回この数をXORするだけで、ソリューションを完成させることができます。