【力扣日记】665 非递减数列

题目描述

给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。

我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。

算法思路

很丢脸,这道题居然做了好久,痛哭。

第一版:

class Solution:
    def checkPossibility(self, nums) -> bool:
        if len(nums)==1:return True
        nums[0],n=(nums[1],1) if nums[0]>nums[1] else (nums[0],0)

        for i in range(1,len(nums)-1):
            if nums[i]>nums[i+1] :
                n += 1
                if nums[i+1]>nums[i-1]:
                    nums[i]=nums[i+1]
                else:
                    nums[i+1]=nums[i]
            if n>1:return False
        return True

1、nums长为1,输出True
2、nums[0],n=(nums[1],1) if nums[0]>nums[1] else (nums[0],0)
  举例如:[4,2,3]
3、分为两种情况,if nums[i+1]>nums[i-1]:else
   if nums[i+1]>nums[i-1]:举例如[1,2,3,5,4,5]
  else举例如[1,2,3,4,2,6]

发布了210 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/104908432