Python中的非递减数组

假设我们有一个包含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]

    • 返回真

    范例(Python)

    让我们看下面的实现以更好地理解-

    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