題目描述
給定一個長度爲 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]