力扣 665 非遞減數列 思維 貪心

2021-10-20 01:21:43 字數 856 閱讀 4992

思路:雖然是簡單題,不過還是挺考察思維能力的。不妨假設有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來使得它...