非递减数列

🎯 问题描述(来源于LeetCode)

给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]

💻 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
def checkPossibility(self, nums: List[int]) -> bool:
l=len(nums)
count=0
for i in range(1,l):
if nums[i]<nums[i-1] :
count+=1
if i == 1 or nums[i] >= nums[i - 2]:
nums[i - 1] = nums[i]
else:
nums[i] = nums[i - 1]
if count>1:
return False
return True

📊 性能分析

提交结果

  • 运行时间:0ms击败100.00%
  • 内存消耗:18.32MB击败83.16%

复杂度验证

  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)