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.length<=1){
    			return true;
    		}
    		
    		List<Integer> list = new ArrayList<>();
            for(int i = 0;i<nums.length-1;i++){
               if(nums[i]>nums[i+1]){
            	   list.add(i+1);
               }
            }
            if(list.size()>1){
            	return false;
            }
            if(list.size()== 0 || list.get(0)==1 || list.get(0)==nums.length-1){
            	return true;
            }
            int left =0;
            for(int i = 0;i<list.get(0);i++){
            	if(nums[i]>nums[list.get(0)]){
            		left++;
            	}
            }
            int right = 0;
            for (int i = list.get(0); i < nums.length; i++) {
            	if(nums[i]<nums[list.get(0)-1]){
            		right++;
            	}
    		}
            
            if(left >1 && right>1){
        		return false;
            }
            return true;
        }
    }
    

    大佬的答案:

    class Solution {
        public boolean checkPossibility(int[] nums) {
           int count = 0;
            for(int i = 0;i<nums.length -1 ;i++){
                if(nums[i]>nums[i+1]){
                    count++;
                    if(i>0 && nums[i+1]<nums[i-1]){
                        nums[i+1] = nums[i];
                    }
                }
            }
            return count<=1;
        }
    }
    
  • 相关阅读:
    leecode 91. 解码方法
    leecode 166. 分数到小数
    剑指 Offer 31. 栈的压入、弹出序列
    leecode 386. 字典序排数
    LeetCode 311 稀疏矩阵的乘法
    leecode 89. 格雷编码
    leecode 79. 单词搜索
    leecode 207. 课程表
    QT -- 解决:Error: Could not decode "*.cpp" with "UTF-8"
    VS+QT -- 没有PRO文件的问题
  • 原文地址:https://www.cnblogs.com/luozhiyun/p/8337252.html
Copyright © 2011-2022 走看看