方法1:
使用排序的方法进行对比.如果循环到这个数字,不等于排序后的数字.那么就是缺失.但也有一种情况就是.缺失的是最后一种情况.第一次就没考虑到这个.给整报错了
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@Time : 2020/10/30 23:38
@Site :
@File : 面试题 17.04. 消失的数字.py
@Software: PyCharm
"""
"""
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
注意:本题相对书上原题稍作改动
示例 1:
输入:[3,0,1]
输出:2
示例 2:
输入:[9,6,4,2,3,5,7,0,1]
输出:8
"""
'''
考虑到都是不一样的数.所以感觉可以使用排好序的
'''
class Solution:
def missingNumber(self, nums: list) -> int:
nums_sort = sorted(nums)
for i in range(len(nums_sort)):
if nums_sort[i] != i:
return i
return nums_sort[-1]+1
A=Solution()
print(A.missingNumber([9,6,4,2,3,5,7,0,1]))
方法2 .使用减法
看了下.题解.居然有直接相减的办法
但感觉直接使用内置函数.就没有意思了.自己实现了.但似乎效果并不好…
class Solution:
def missingNumber(self, nums: list) -> int:
sums = (len(nums) + 1) * len(nums) / 2
for i in range(len(nums)):
sums -= nums[i]
return int(sums)