leetcode-268. 缺失数字

题目要求:


方法一:

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.结果:

    结果上来看效果不好

leetcode-268. 缺失数字

方法二

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.运行结果(效果还不错)

leetcode-268. 缺失数字