665. Non-decreasing Array

Ref: https://leetcode-cn.com/problems/non-overlapping-intervals/

这道题难点在于利用测试用例设计判断条件来覆盖全部可能,可以考虑下面三种给定用例:

对于前两个用例,在遍历时发现时,需要更新;而对于第三个用例,则需要更新。直观上可以看出,只有当第个元素也比大时,需要更新,其他情况下则只需要考虑和的关系。主要代码如下:

class Solution:
    def checkPossibility(self, nums: List[int]) -> bool:
        k = 0
        l = len(nums)
        for i in range(1, l):
            if k > 1:
                return False
            if nums[i] >= nums[i - 1]:
                continue
            k += 1
            if i - 2 >= 0 and nums[i - 2] > nums[i]:
                nums[i] = nums[i - 1]
            else:
                nums[i - 1] == nums[i]
        return k <= 1

你可能感兴趣的:(665. Non-decreasing Array)