题目描述
给定一个数组,里面是0-n的数字,找出缺了的一项,例如:
思路
1、利用哈希表,但是是只有key的哈希表,在python中表现的数据结构是set(集合)。set跟dict差不多,但是set只有key,没有value:
set的使用方法
set的性质:确定性,互异性,无序性
set的使用方法:
a = set() ——创建
a.add()——添加
a.remove()——删除
a.clear()——清空
a.pop()——取出值(随机)
实现这个算法的代码是:
class Solution(object):
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
num_set = set(nums)
n = len(nums) + 1
for number in range(n):
if number not in num_set:
return number
2、sorting的方法,就是先排序,然后遍历看看缺了哪个,这个方法有点弱智我们就不写了。
3、利用XOR的方法进行计算:
class Solution {
public int missingNumber(int[] nums) {
int missing = nums.length;
for (int i = 0; i < nums.length; i++) {
missing ^= i ^ nums[i];
}
return missing;
}
}
4、一个很神奇的方法:
因为知道是多少个数,缺了一个,所以把总数算出来,减去原本的总数sum即得到缺了的那个数。
class Solution:
def missingNumber(self, nums):
expected_sum = len(nums)*(len(nums)+1)//2
actual_sum = sum(nums)
return expected_sum - actual_sum