缺失数字
方法一:数学方法
用序列[0,1,...,n]
的和减去给定的nums
的和,可得到缺失的数字。
复杂度
时间复杂度:O(n)。
空间复杂度:O(1)。
代码
1 | class Solution: |
高斯求和有溢出风险
方法二:位运算(异或运算)
先得到[0,1,...,n]
的异或值,再将结果对数组nums
中的每一个数进行一次异或运算,最终的异或结果即为这个缺失的数字。
在编写代码时,由于[0,1,...,n]
恰好是这个数组的下标加上
n,因此可以用一次循环完成所有的异或运算。
复杂度
时间复杂度:O(n)。假设异或运算的时间复杂度是常数的。
空间复杂度:O(1)。
代码
1 | class Solution: |