問題
存在する番号は 1 回だけ見つけなければなりません。
ブルートフォースアプローチは、HashMap を使用して値のカウントを追跡し、カウント =1 の値を返すことです。
ビット操作を使用した最適なアプローチ:
他のすべての組み合わせでは、1^0 = 1、0 ^1 = 1、0 ^ 0 = 0、1 ^ 1= 0 であることがわかっています。
これは、exor が同じ値に対して 0 を与えることを意味します。したがって、配列内のすべての値を exor すると、カウントが 1 の数値のみが得られます (残りの値は 0 になるため)
TC: O(n)
SC:O(1)
class Solution { public int singleNumber(int[] nums) { int single = nums[0]; for(int i =1;i<nums.length;i++){ single = single^nums[i]; } return single; } }
以上が単一の数字 Iの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。