zoukankan      html  css  js  c++  java
  • 665. Non-decreasing Array

    Given an array with n integers, your task is to check if it could become non-decreasing by modifying at most 1 element.
    
    We define an array is non-decreasing if array[i] <= array[i + 1] holds for every i (1 <= i < n).
    
    Example 1:
    Input: [4,2,3]
    Output: True
    Explanation: You could modify the first 
    4
     to 
    1
     to get a non-decreasing array.
    Example 2:
    Input: [4,2,1]
    Output: False
    Explanation: You can't get a non-decreasing array by modify at most one element.
    Note: The n belongs to [1, 10,000].
    class Solution {
        public boolean checkPossibility(int[] nums) {
            if (nums == null || nums.length < 3) {
                return true;
            }
            int cnt = 0;
            for (int i = 1; i< nums.length; i++) {
                if (nums[i] < nums[i - 1]) {
                    if (i < nums.length - 1 && nums[i + 1] < nums[i - 1]) {
                        nums[i - 1] = nums[i];
                        cnt++;
                        if (i - 2 >= 0 && nums[i - 2] > nums[i - 1]) {
                            return false;
                        }
                    } else {
                        nums[i] = nums[i - 1];
                        cnt++;
                    }
                }
                if (cnt > 1) {
                    return false;
                }
            }
            return true;
        }
    }
    

      

      

    We can also do it without modifying the input by using a variable prev to hold the a[i-1]; if we have to lower a[i] to match a[i-1] instead of raising a[i-1], simply skip updating prev;

    without modified

    class Solution {
        public boolean checkPossibility(int[] a) {
            int modified = 0;
            for (int i = 1, prev = a[0]; i < a.length; i++) {
                if (a[i] < prev) {
                    if (modified++ > 0) return false;
                    if (i - 2 >= 0 && a[i - 2] > a[i]) continue;
                }
                prev = a[i];
            }
            return true;
        }
    }
    

      

  • 相关阅读:
    js正则表达式常见规则整理
    struts2标签 遍历map集合
    RabbitMQ面试问题
    vue基础学习
    flowableの历史查询
    flowableの日志打印
    flowableのID生成器
    flowableの流程发起人
    SpringBoot+Dubbo(XML配置方式)
    linux安装zookeeper伪分布式
  • 原文地址:https://www.cnblogs.com/apanda009/p/7659316.html
Copyright © 2011-2022 走看看