🧩Algo 技巧

136. 只出现一次的数字

难度:🟢 Easy | 标签:位运算、异或 | 状态:⬜ LeetCode 链接

思路

异或性质:a ^ a = 0a ^ 0 = a。 所有数异或,相同对抵消,剩下的就是唯一出现一次的。

代码

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res = 0;
        for (int x : nums) res ^= x;
        return res;
    }
};

复杂度

  • 时间 O(n),空间 O(1)

易错 / 回顾

  • 异或满足交换律 / 结合律,所以顺序无关
  • 137(其他元素出现 3 次):位运算计数 mod 3
  • 260(两个只出现 1 次):异或后按某位分组
Related · 技巧