#力扣 LeetCode665. 非遞減數列 @FDDLC
阿新 • • 發佈:2021-02-06
技術標籤:演算法&資料結構
題目描述:
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; } }