Leetcode_Python 665 非递减数列

简介: 分析:题目让最多改变一个情况下,满足非递减数列。遍历数组,可能存在以下情况。

分析:题目让最多改变一个情况下,满足非递减数列。遍历数组,可能存在以下情况。


有大于1个的nums[i] > nums[i + 1]情况,就不可能使得它成为一个非递减数列,直接返回Flase。例[4,2,1]。

如果都是num[i] <= nums[i+1]这种情况,直接返回True。例如[1,2,3],[1,2,2,3]。

只存在一个nums[i] > nums[i + 1]

  • 如果不在第一个位置出现nums[i] > nums[i + 1],满足num[i-1]>num[i+1]n[i]>n[i+2],不可能使他成为非递减数列,直接返回Flase。例如[2,4,1,2]。
  • 其他情况均可,例如[2,1,3],[0,3,1,3]。
class Solution(object):
    def checkPossibility(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        nums.append(10**5)
        count = 0
        place = 0
        flag = True
        for i in range(len(nums)-1):
            if nums[i] > nums[i+1]:
                count += 1
            if count == 1 and flag:
                place = i
                flag = False
        if count > 1:
            return False
        elif count == 0:
            return True
        elif count == 1:
            if place == 0:
                return True
            elif nums[place-1] > nums[place+1] and nums[place]>nums[place+2]:
                return False
            else:
                return True
相关文章
|
7月前
|
Python
Python实现递归的方式来生成斐波那契数列
Python实现递归的方式来生成斐波那契数列
|
7月前
|
存储 运维 数据挖掘
Python列表中每个元素前面连续重复次数的数列统计
Python列表中每个元素前面连续重复次数的数列统计
60 1
|
2月前
Leetcode第38题(外观数列)
LeetCode第38题要求生成外观数列的第n项,该数列从数字1开始,每一项都是对前一项的描述,例如第1项是"1",第2项是"11",第3项是"21",以此类推。
29 0
|
4月前
|
存储
LeetCode------斐波那契数列(2)
这篇文章提供了解决LeetCode上"斐波那契数列"问题的两种方法:一种是使用备忘录模式通过递归计算并存储结果以避免重复计算,另一种是自底向上的迭代方法,同时要求结果对1e9+7取模。
LeetCode------斐波那契数列(2)
|
7月前
|
数据挖掘 数据处理 索引
使用Python实现DataFrame中奇数列与偶数列的位置调换
使用Python实现DataFrame中奇数列与偶数列的位置调换
83 1
|
7月前
|
存储 Python
Python实现案例讲解~计算斐波那斐数列的前n项
Python实现案例讲解~计算斐波那斐数列的前n项
|
7月前
|
算法 测试技术 C#
前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度
前缀和+单调双队列+贪心:LeetCode2945:找到最大非递减数组的长度
|
7月前
leetcode-38:外观数列
leetcode-38:外观数列
41 0
|
算法 安全 Swift
LeetCode - #38 外观数列
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
LeetCode - #38 外观数列
|
机器学习/深度学习 Python
Python实现数列求和
Python实现数列求和
167 0