Python 中的非遞減陣列
假設我們有一個包含 n 個整數的陣列,我們的任務是檢查它是否可以透過修改最多一個元素變成非遞減的。我們可以定義一個數組是非遞減的,如果它滿足以下規則:對於每個 i(1 <= i < n),array[i] <= array[i + 1]。所以如果陣列是 [4,2,3],那麼答案將是真。如果我們將 4 更改為 1,我們可以簡單地將其轉換為非遞減陣列,那麼陣列將是 [1,2,3]
為了解決這個問題,我們將遵循以下步驟 -
如果 arr 包含 2 個或更少的元素,則返回 true
ans := False
對於 i 的範圍從 0 到 arr 中元素的數量 – 2
如果 arr[i] > arr[i + 1]
如果 ans 為非 0,則返回 false,否則 ans := True
如果 i > 0
如果 arr[i - 1] > arr[i + 1],則 arr[i + 1] := arr[i]
返回 true
示例(Python)
讓我們看看以下實現以更好地理解 -
class Solution(object): def checkPossibility(self, nums): if len(nums) <=2: return True ans = False for i in range(len(nums)-1): if nums[i] > nums[i+1]: if ans: return False else: ans = True if i>0: if nums[i-1] > nums[i+1]: nums[i+1] = nums[i] return True ob1 = Solution() print(ob1.checkPossibility([4,2,3,5]))
輸入
[4,2,3,5]
輸出
True
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP