665.非递减数列
665.非递减数列
思路问题:这道题主要要考虑到出现比前面小的两种情况,对这两种情况进行修改,要注意不可以影响到其他书数大小的变化,还有要注意i为1的情况
class Solution(object):
def checkPossibility(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
#获取列表的长度
N = len(nums)
count = 0
#遍历列表
for i in range(1, N):
#当出现后一个数比前一个数小的情况,count增加
if nums[i] < nums[i - 1]:
count += 1
#对造成非递减的情况的值进行修改,有两种情况
if i == 1 or nums[i] >= nums[i - 2]:#要考虑特殊的情况当i为1的时候
#该数比前一个数小,但是比前方的第二个数大,所以只需要修改前面的那个数和自己相等
nums[i - 1] = nums[i]
else:
nums[i] = nums[i - 1]
#该数比前面两个数都小,只需要修改自己为自己前面的那个数
return count <= 1