思路:雖然是簡單題,不過還是挺考察思維能力的。不妨假設有a
i>ai
+1a_i>a_
ai>ai
+1,那麼此時我們必須要修改元素使得它滿足題意,有幾種修改方式?兩種。1.
1.1.
當a i−
1<=a
i+1a_<=a_
ai−1
<=a
i+1
時,我們可以把a
ia_i
ai變成ai−
1a_ai−1
;2.
2.2.
當a i−
1>ai
+1a_>a_
ai−1
>ai
+1時,我們只能把ai+
1a_ai+1
變成a
ia_i
ai。優先用哪種方式?當然是前者,這裡涉及到貪心的思想。因為ai+
1a_ai+1
越小,後面的序列越有可能滿足題意,所以我們要盡量的讓它更小。不理解這一點的我給你舉個例子3、4
、3、3
3、4、3、3
3、4、3、
3,顯然把第二個4
44變小是最優解,而不是把第三個3
33變大。
class
solution
}return
true;}
};
力扣 665非遞減數列
給你乙個長度為 n 的整數陣列,請你判斷在 最多 改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 0 i n 2 總滿足 nums i nums i 1 輸入 nums 4,2,3 輸出 true 解釋 你可以通過把第乙個4變成1來使得它...
665 非遞減數列
思路 遍歷整個陣列,如果遇到nums i nums i 1 的情況,則要麼修改nums i 要麼修改nums i 1 若修改一次就能成功,則去掉nums i 或者num i 1 剩下的陣列必然是非遞減的。class solution def checkpossibility self,nums ty...
665 非遞減數列
給定乙個長度為 n 的整數陣列,你的任務是判斷在最多改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 1 i n 滿足 array i array i 1 示例 1 輸入 4,2,3 輸出 true 解釋 你可以通過把第乙個4變成1來使得它...