p153 非减数组(leetcode 665)

一:解题思路

Time:O(n),Space:O(1)

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    bool checkPossibility(vector<int>& nums) 
    {
        if (nums.size() == 0) return false;
        if (nums.size() == 1) return true;
        bool modified = nums[0] > nums[1];

        for (int i = 1; i < nums.size() - 1; i++)
        {
            if (nums[i] > nums[i + 1])
            {
                if (modified) return false;
                if (nums[i + 1] >= nums[i - 1]) nums[i] = nums[i-1];
                else nums[i + 1] = nums[i];
                modified = true;
            }
        }

        return true;
    }
};

Java:

class Solution {
        public boolean checkPossibility(int[] nums)
        {
               if(nums==null || nums.length==0) return false;
               if(nums.length==1) return true;
               boolean modified=nums[0]>nums[1];

               for(int i=1;i<nums.length-1;i++)
               {
                   if(nums[i]>nums[i+1])
                   {
                       if(modified) return false;
                       if(nums[i+1]>=nums[i-1]) nums[i]=nums[i-1];
                       else nums[i+1]=nums[i];
                       modified=true;
                   }
               }

               return true;
        }
    }
posted @ 2020-05-13 21:08  repinkply  阅读(149)  评论(0)    收藏  举报