leetcode 665.非递减数列

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

给定数组,求去掉一个数是否能构成非递减数列。

 

遍历数组,用一个变量f来表示要去掉几个数才能使数列变成非递减数列。需要注意的是不能只判断nums[i-1]和nums[i]的关系,还要判断nums[i-2]和nums[i]的大小关系。防止[4,2,3]这种情况的误判。

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

 

posted @ 2019-09-17 22:54  星辰大海。  阅读(311)  评论(0编辑  收藏  举报