zoukankan      html  css  js  c++  java
  • 665. 非递减数列

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

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

    示例 1:

    输入: nums = [4,2,3]
    输出: true
    解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。
    

    示例 2:

    输入: nums = [4,2,1]
    输出: false
    解释: 你不能在只改变一个元素的情况下将其变为非递减数列。
    

    说明:

    • 1 <= n <= 10 ^ 4
    • - 10 ^ 5 <= nums[i] <= 10 ^ 5

    过了都不知道为什么能过系列~

    class Solution:
        def checkPossibility(self, nums: List[int]) -> bool:
            cnt=0
            if len(nums)<=1:return True
            for i in range(len(nums)):
                if i==0:
                    if nums[i]>nums[i+1]:
                        cnt+=1
                        nums[i]=nums[i+1]
                elif i==len(nums)-1:
                    if nums[i]<nums[i-1]:
                        cnt+=1
                        nums[i]=nums[i-1]
                else:
                    if nums[i]<nums[i-1] and nums[i]<nums[i+1]:
                        cnt+=1
                        nums[i]=nums[i-1]
                    elif nums[i]>nums[i-1] and nums[i]>nums[i+1] and nums[i-1]<=nums[i+1]:
                        cnt+=1
                        nums[i]=nums[i-1]
                    
            if nums==sorted(nums) and cnt<=1:
                return True
            else:
                return False

    optimization====>

    class Solution:
        def checkPossibility(self, nums: List[int]) -> bool:
            cnt = 0
            for i in range(1, len(nums)):
                if nums[i] < nums[i - 1]:
                    cnt += 1
                    if i + 1 <len(nums) and i - 2 >= 0:
                        if nums[i+1] < nums[i-1] and nums[i-2] > nums[i]: 
                            return False 
                    if cnt > 1:
                        return False
            return True

  • 相关阅读:
    背包问题
    floyed算法
    读Windows编程
    PB串口编程资料(转)
    读TCP-IP详解卷1:协议(1)
    Oracle把两个空格以上的空格,替换为两个空格
    PB中multieditline空间的“~r~n"转"~n"
    PB中掉用Run以后,等Run的程序关闭以后才会执行后边的语句
    一个关于生成随机数的算法
    英语词根
  • 原文地址:https://www.cnblogs.com/xxxsans/p/14383877.html
Copyright © 2011-2022 走看看