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 first4
to1
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: def checkPossibility(self, nums): """ :type nums: List[int] :rtype: bool """ count = 0 result = [] if len(nums) == 1: return True else: for j in range(1, len(nums)): if nums[j] < nums[j-1]: count += 1 result.append(j) if count == 0: return True elif count > 1: return False else: # count ==1 i = result[0] print(nums[i]) if i == 1 or i == len(nums) -1: return True elif nums[i+1] >= nums[i-1]: return True elif nums[i-2] <= nums[i]: print(nums[i-2]) return True else: return False
add another answer:
class Solution: def checkPossibility(self, nums): """ :type nums: List[int] :rtype: bool """ a,b=nums[:],nums[:] if len(nums)>2: for i in range(1,len(nums)-1): if a[i]>a[i+1]: del a[i]aa del b[i+1] return ((a == sorted(a)) or (b==sorted(b))) return True else: return True