给定一个长度为 n
的整数数组,你的任务是判断在最多改变 1
个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中所有的 i
(1 <= i < n),满足 array[i] <= array[i + 1]
。
示例 1:
输入: [4,2,3]
输出: True
解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。
class Solution:
def checkPossibility(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
for i in range(len(nums)-1):
if nums[i]>nums[i+1]:
s1 = nums[0:i]+nums[i+1:] #此处有两种情况,一个是大的数字为异常,一个是小的数字为异常
if s1==sorted(s1):
return True
s2 = nums[0:i+1]+nums[i+2:]
if s2==sorted(s2):
return True
return False
return True
执行用时: 124 ms, 在Non-decreasing Array的Python3提交中击败了17.30% 的用户
思路:只允许出现一次错误,所以查找的时候,当出现错误时,只要把错误的给去掉,剩下的就是按照正确排序的。