题目描述
给定一个长度为 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]