665. Non-decreasing Array

Question 665

https://leetcode.com/problems/non-decreasing-array/description/

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].

Answer

v1. detect in for loop 75%

class Solution(object):
    def checkPossibility(self, nums):
        
        ModifyingTimes = 0
        for i in range(1 , len(nums)) :

            if nums[i-1] > nums[i] :
                ModifyingTimes += 1

                # delete left one
                if nums[i-2] < nums[i] or i < 2 :
                    nums[i-1] = nums[i]
                # delete right one
                else:
                    nums[i] = nums[i-1]
                
            if ModifyingTimes > 1 :
                return False
        
        return True

Last updated