665.非递减数列


665.非递减数列

思路问题:这道题主要要考虑到出现比前面小的两种情况,对这两种情况进行修改,要注意不可以影响到其他书数大小的变化,还有要注意i为1的情况

class Solution(object):
    def checkPossibility(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        #获取列表的长度
        N = len(nums)
        count = 0
        #遍历列表
        for i in range(1, N):
            #当出现后一个数比前一个数小的情况,count增加
            if nums[i] < nums[i - 1]:
                count += 1
                #对造成非递减的情况的值进行修改,有两种情况
                if i == 1 or nums[i] >= nums[i - 2]:#要考虑特殊的情况当i为1的时候
                    #该数比前一个数小,但是比前方的第二个数大,所以只需要修改前面的那个数和自己相等
                    nums[i - 1] = nums[i]
                else:
                    nums[i] = nums[i - 1]
                     #该数比前面两个数都小,只需要修改自己为自己前面的那个数
        return count <= 1