题目要求:
方法一:
1.代码及思路:
先对nums排序,检查nums[0]的值如果不为0则返回0,然后从i=0位置开始,不断遍历整个数组,如果i+1位置的元素减去i位置的元素为1,则i后移否则循环停止,最后返回i位置的元素加1即所需的返回值
class Solution(object):
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
i,n=0,len(nums)
if nums[0] != 0:return 0
while i<n-1 and (nums[i+1]-nums[i])==1:
i += 1
return nums[i]+1
2.结果:
结果上来看效果不好
方法二
1.代码和思路
可以看出这是一个差为1的等差数列,即可首先算出目标要求的和n*(n+1)/2,用整个和减去数组的和即为所求的数
class Solution(object):
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n=len(nums)
sum_total=n*(n+1)/2
sum_nums=sum(nums)
return sum_total-sum_nums
2.运行结果(效果还不错)