leetcode 非遞減數列

2021-10-25 15:22:31 字數 1030 閱讀 3199

題目

給你乙個長度為 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

思路:

什麼非遞減啊。就是遞增嘛

要求就是判斷只改一次是否能改為遞增的

像3,4, 2, 3. 確實只下降一次。但是2 怎麼改。1次都不會變成遞增,問題就是他 後面的還是小。就一次根本滿足不了這個傢伙,不行

解題過程:

從下標1 開始比對

如果這個數就已經下降了。不用懷疑。把前面的變小!這樣子對後面的傷害值最小

如果從下標2以後開始下降,就得看一下是否能直接把前面的變小,如果也把前面的變小了。他比 他前面的還小可怎麼辦呢。這時候只能把當前的變大

加個判斷即可

1,4,2,5 (2比1大,不用擔心把4變小)

3,4,2,5(2比3小。我不能把4變小了。只能把自己變大,有可能會傷害到後面的朋友。很無奈)

**:

public

boolean

checkpossibility

(int

nums)

// 出現下降。開始處理

if(nums[i]

< nums[i-1]

)else

count++;}

}return count <=1;

}

LeetCode 非遞減數列

給定乙個長度為 n 的整數陣列,你的任務是判斷在最多改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 1 i n 滿足 array i array i 1 示例 1 輸入 4,2,3 輸出 true 解釋 你可以通過把第乙個4變成1來使得它...

非遞減數列

非遞減數列 題目給你乙個長度為 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...