asi 由于 pan es2017 logs com arr 改变
这道题为简单题,但是做的过程中忽略了一些特殊情况,最后还是做出来了,怪说不得这道题的通过率才21%左右
我设置了两个变量,prev代表上一个元素,prev_prev代表上上个元素,代码的大致思路就是如果有两次(因为我把两个值设置为无穷小,所以第一次num就是自动加1,但是这一次不算)该元素比上一个prev小,那么就返回False,否则True,在这个过程中最难的就是第一次出现的时候如何改变prev和prev_prev的值。如果上上个元素小于i,那么就把上个和上上个元素都变为i,prev_prev == float(‘Inf’) 这个条件是由于当时没考虑到长度小于3时才加的,其他情况就把上个和上上个元素都变为i元素的上个元素值
- class Solution(object):
- def checkPossibility(self, nums):
- """
- :type nums: List[int]
- :rtype: bool
- """
- prev_prev = float(‘inf‘)
- prev = float(‘inf‘)
- num = 0
- for i in nums:
- if i < prev:
- num += 1
- if num == 1: prev = i
- else:
- prev_prev = prev
- prev = i
- if num == 2:
- if prev_prev == float(‘inf‘) or prev_prev <= i:
- prev_prev = i
- prev = i
- else:
- prev_prev = prev
- if num == 3:
- return False
- return True
Non-decreasing Array
来源: http://www.bubuko.com/infodetail-2313311.html