給定乙個長度為 n 的整數陣列,你的任務是判斷在最多改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。
我們是這樣定義乙個非遞減數列的: 對於陣列中所有的 i (1 <= i < n),滿足 array[i] <= array[i + 1]。
示例 1:
輸入: [4,2,3]
輸出: true
解釋: 你可以通過把第乙個4變成1來使得它成為乙個非遞減數列。
示例 2:
輸入: [4,2,1]
輸出: false
解釋: 你不能在只改變乙個元素的情況下將其變為非遞減數列。
說明: n 的範圍為 [1, 10,000]。
思路分析:這道題標註的簡單,看起來也挺簡單的,蛋試想要通過好像沒有那麼簡單。
我們從第乙個元素開始掃瞄,如果發現逆序nums[index] > nums[index + 1],這時我們有兩種選擇,一種是修改nums[index + 1]為nums[index],一種是修改nums[index]為nums[index + 1]。
如果index == 0,直接修改nums[index] = int_min,比如[4,2,3],修改4為int_min
如果nums[index - 1] < nums[index + 1],這時我們只要修改nums[index] = nums[index + 1],比如[-1,4,2,3]中4的逆序,將4修改為2即可。
否則嘗試修改nums[index + 1] == nums[index],並標記修改的位置。比如[3,4,2],當index = 1時出現逆序,這時將2修改為4
leetcode 非遞減數列
題目 給你乙個長度為 n 的整數陣列,請你判斷在 最多 改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 0 i n 2 總滿足 nums i nums i 1 示例 1 輸入 nums 4,2,3 輸出 true 解釋 你可以通過把第乙個...
非遞減數列
非遞減數列 題目給你乙個長度為 n 的整數陣列,請你判斷在 最多 改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 0 i n 2 總滿足 nums i nums i 1 示例 1 輸入 nums 4,2,3 輸出 true 解釋 你可以通...
非遞減數列 leetcode665
class solution object defcheckpossibility self,nums type nums list int rtype bool 判斷截斷點,對截斷點進行分析 count 0 i 0length len nums for j in range length 1 if...