😸

136. Single Number

2025/04/07に公開

非空の整数配列 nums が与えられます。すべての要素は2回ずつ出現しますが、ただ1つだけ1回だけ出現する要素があります。その1つだけの要素を見つけてください。

条件:

  • 線形時間計算量(O(n))で解を求める必要があります。
  • 定数の追加空間しか使用してはいけません。

例1:

入力:
nums = [2,2,1]

出力:
1


例2:

入力:
nums = [4,1,2,1,2]

出力:
4


例3:

入力:
nums = [1]

出力:
1


制約:

  • 1 <= nums.length <= 30,000
  • -30,000 <= nums[i] <= 30,000

XOR の特性を利用すると、線形時間 (O(n)) かつ 定数空間 (O(1))

XORの特性:

  1. 自己XORは0になる:
  2. 0とのXORは元の値を保つ:
  3. 交換法則と結合法則が成り立つ:

Discussion