假设我们有一个包含n个整数的数组,我们的任务是通过最多修改一个元素来检查它是否可以不减少。如果满足以下规则,我们可以定义一个数组为非递减数组:array [i] <= array [i + 1] for each i(1 <= i <n)。因此,如果数组为[4,2,3],那么答案将是正确的。如果将4设为1,我们可以简单地将其转换为非递减数组,则该数组将为[1,2,3]
为了解决这个问题,我们将遵循以下步骤-
如果arr具有2个或更少的元素,则返回ture
回答:= False
对于范围从0到arr的元素数的i – 2
如果ans非零,则返回false,否则返回ans:= True
如果我> 0
如果arr [i-1]> arr [i + 1],则arr [i + 1]:= arr [i]
如果arr [i]> arr [i + 1]
返回真
让我们看下面的实现以更好地理解-
class Solution(object): def checkPossibility(self, nums): if len(nums) <=2: return True ans = False for i in range(len(nums)-1): if nums[i] > nums[i+1]: if ans: return False else: ans = True if i>0: if nums[i-1] > nums[i+1]: nums[i+1] = nums[i] return True ob1 = Solution()print(ob1.checkPossibility([4,2,3,5]))
[4,2,3,5]
输出结果
True