技巧

只出现一次的数字

简单#136Java时间 O(n)空间 O(1)

题目要做什么

数组中恰有一个元素出现一次,其余元素都出现两次。在线性时间、常数空间内找出单独出现的数。

题目示例输入nums = [4,1,2,1,2]
题目示例输出4

01 为什么这样做

同一个数异或自身得到 0,任何数异或 0 保持不变。异或满足交换律和结合律,所有成对元素抵消后只剩答案。

始终成立的条件

result 是已经扫描部分所有元素的异或值。

02 看见算法执行

动画与代码同步

修改输入,播放自己的例子

当前使用题目示例
修改输入会改变执行过程;预期输出用于核对结果。
数组 / nums步骤 1
执行状态
本次演示输出播放到最后查看

Solution.java参考解法
1class Solution {2    public int singleNumber(int[] nums) {3        int result = 0;4        for (int x : nums) {5            result ^= x;6        }7        return result;8    }9}

键盘控制:A 后退 · D 前进

编程练习

↑↓ 选择↵ 打开Pagefind 全文检索