給你乙個長度為 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
解釋: 你不能在只改變乙個元素的情況下將其變為非遞減數列。
分析:起初直接想用後一位與前一位做對比,結果總是卡在一些測試用例上,分析完幾組失敗的測試用例後,發現需要對比i,i-1,i-2這三個元素的資訊,i 一旦小於i-1就意味著三個元素一定有乙個要調整,一旦出現2次要調整的情況,就說明是非遞減序列。接下來思考如何調整,在這裡有乙個技巧,讓這三個元素的最大數盡可能的小,才有更大的可能使後面的數保持非遞減序列,**如下:
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來使得它...
665 非遞減數列
給你乙個長度為 n 的整數陣列,請你判斷在 最多 改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。我們是這樣定義乙個非遞減數列的 對於陣列中所有的 i 0 i n 2 總滿足 nums i nums i 1 示例 1 輸入 nums 4,2,3 輸出 true 解釋 你可以通過把第乙個4變成...