1. 程式人生 > 其它 >665.非遞減數列

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