1. 程式人生 > 其它 >go grpc

go grpc

技術標籤: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

在這裡插入圖片描述