665 Non-decreasing Array
665. Non-decreasing Array
题目: https://leetcode.com/problems/Non-decreasing-Array/
难度:
Easy
思路
从index=1的元素依次检查,只要不符合规则则让count+1,如果count>1则肯定不符合返回False 但是我们在发现nums[i]小于nums[i-1]的时候,我们就必须要对原数组作出改变了,来让它的后面index部分尽可能满足条件 下面就是两种情况: - 2,4,2,6
如果是这种情况,当index=2时,不满足条件,但是i=0的元素是小于i=2处元素的,我们需要改变的是i-1处的元素,也就是将4改变成i=2处元素即2,最终变成2,2,2,6
- 3,4,2,6
这种情况如果我们将4变成2那么仍然是不满足条件的,此时我们需要将2变成4,即将i处元素变为i-1处元素
在每一次不符合条件的时候我们都检查一下count,如果count大于1的话我们就返回False,否则最终就返回True
class Solution(object):
def checkPossibility(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
count = 0
for i in range(1,len(nums)):
if nums[i] < nums[i-1]:
count += 1
if count > 1:
return False
if i - 2 < 0 or nums[i-2] <= nums[i]:
nums[i-1] = nums[i]
else:
nums[i] = nums[i-1]
return True