Ref: https://leetcode-cn.com/problems/non-overlapping-intervals/
這道題難點(diǎn)在于利用測(cè)試用例設(shè)計(jì)判斷條件來覆蓋全部可能髓窜,可以考慮下面三種給定用例:
對(duì)于前兩個(gè)用例浑测,在遍歷時(shí)發(fā)現(xiàn)時(shí)横朋,需要更新
袜瞬;而對(duì)于第三個(gè)用例漂洋,則需要更新
允趟。直觀上可以看出嘁字,只有當(dāng)?shù)?img class="math-inline" src="https://math.jianshu.com/math?formula=i-2" alt="i-2" mathimg="1">個(gè)元素也比
大時(shí)劣欢,需要更新
,其他情況下則只需要考慮
和
的關(guān)系湿弦。主要代碼如下:
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