1. 程式人生 > 其它 >#力扣 LeetCode665. 非遞減數列 @FDDLC

#力扣 LeetCode665. 非遞減數列 @FDDLC

技術標籤:演算法&資料結構

題目描述:

https://leetcode-cn.com/problems/non-decreasing-array/submissions/

Java程式碼:

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

說明:

當a[i-1]<a[i]時:

1、如果a[i-1]是頭,或者a[i]是尾,可糾正,cnt++;

2、如果a[i-1]不是頭,且a[i]不是尾,且a[i-2]大於a[i],且a[i-1]大於a[i+1],不可糾正,直接返回false。

再精簡一下:

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