【力扣日記】665 非遞減數列

題目描述

給定一個長度爲 n 的整數數組,你的任務是判斷在最多改變 1 個元素的情況下,該數組能否變成一個非遞減數列。

我們是這樣定義一個非遞減數列的: 對於數組中所有的 i (1 <= i < n),滿足 array[i] <= array[i + 1]。

算法思路

很丟臉,這道題居然做了好久,痛哭。

第一版:

class Solution:
    def checkPossibility(self, nums) -> bool:
        if len(nums)==1:return True
        nums[0],n=(nums[1],1) if nums[0]>nums[1] else (nums[0],0)

        for i in range(1,len(nums)-1):
            if nums[i]>nums[i+1] :
                n += 1
                if nums[i+1]>nums[i-1]:
                    nums[i]=nums[i+1]
                else:
                    nums[i+1]=nums[i]
            if n>1:return False
        return True

1、nums長爲1,輸出True
2、nums[0],n=(nums[1],1) if nums[0]>nums[1] else (nums[0],0)
  舉例如:[4,2,3]
3、分爲兩種情況,if nums[i+1]>nums[i-1]:else
   if nums[i+1]>nums[i-1]:舉例如[1,2,3,5,4,5]
  else舉例如[1,2,3,4,2,6]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章