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

    非递减数列

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

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

    示例 1:

    输入: [4,2,3]

    输出: True

    解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。

    示例 2:

    输入: [4,2,1]

    输出: False

    解释: 你不能在只改变一个元素的情况下将其变为非递减数列。

    说明:  n 的范围为 [1, 10,000]。

    思路

    保证前面的数列是有序的

    保证前面的数列尽可能的小

    定一个计数器,记录为了保证有序修改的次数

    最后判断修改的次数

     1 public class Solution {
     2     public boolean checkPossibility(int[] nums) {
     3         int count=0;
     4         for(int i=1;i<nums.length&&count<2;i++){
     5             if(nums[i]>=nums[i-1]) continue;
     6             if(i-2>=0&&nums[i]<nums[i-2]){
     7                 nums[i]=nums[i-1];
     8             }else{
     9                 nums[i-1]=nums[i];
    10             }
    11             count++;
    12         }
    13         return count<=1;
    14     }
    15 }
  • 相关阅读:
    真的是最后一次作业了!!!!
    最后一次总结
    作业十一总结?
    作业十一总结
    实验十总结
    作业9总结
    附加作业
    补交第十次作业
    补交第九次作业
    补交第八次作业
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10394931.html
Copyright © 2011-2022 走看看