基本思路:先考虑边界情况,当长度为1或2,直接True。
当出现一个数为减的时候,记录count加一,后将其与下标为i-2的比较,如果比它要小,则将nums[i]变成nums[i-1],否则将nums[i-1],变成nums[i],使保证非递减。要注意的是当i==1,且长度为3时,直接跳过即可,代码如下:
class Solution:
def checkPossibility(self, nums: List[int]) -> bool:
count=0
if len(nums)==1 or len(nums)==2:
return True
for i in range (1,len(nums)):
if nums[i-1]>nums[i]:
count+=1
if nums[i]<nums[i-2] and i!=1:
nums[i]=nums[i-1]
else:
nums[i-1]=nums[i]
if count<=1:
return True
else:
return False