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