go grpc
阿新 • • 發佈:2021-02-05
技術標籤:Python
給你一個長度為 n 的整數陣列,請你判斷在 最多 改變 1 個元素的情況下,該陣列能否變成一個非遞減數列。
我們是這樣定義一個非遞減數列的: 對於陣列中所有的 i (0 <= i <= n-2),總滿足 nums[i] <= nums[i + 1]。
示例 1:
輸入: nums = [4,2,3]
輸出: true
解釋: 你可以通過把第一個4變成1來使得它成為一個非遞減數列。
示例 2:
輸入: nums = [4,2,1]
輸出: false
解釋: 你不能在只改變一個元素的情況下將其變為非遞減數列。
說明:
1 <= n <= 10 ^ 4
- 10 ^ 5 <= nums[i] <= 10 ^ 5
思路
遍歷陣列,初始 count = 0,如果當前元素值比它下一個元素值大,則 count += 1,當 count > 1 時,直接返回 false
class Solution:
def checkPossibility(self, nums: List[int]) -> bool:
count = 0
for i in range(1,len(nums)):
if nums[i] < nums[i-1]:
count += 1
if i+1 < len(nums) and i-2 >= 0: # 特殊情況下
if nums[i+1] < nums[i-1] and nums[i-2] > nums[i]:
return False # 不用繼續遍歷,可直接返回false
if count > 1:
return False
return True