日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 665. 非递减数列(贪心算法)

發(fā)布時(shí)間:2023/11/29 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 665. 非递减数列(贪心算法) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

給你一個(gè)長(zhǎng)度為 n 的整數(shù)數(shù)組,請(qǐng)你判斷在 最多 改變 1 個(gè)元素的情況下,該數(shù)組能否變成一個(gè)非遞減數(shù)列。

我們是這樣定義一個(gè)非遞減數(shù)列的: 對(duì)于數(shù)組中所有的 i (0 <= i <= n-2),總滿足 nums[i] <= nums[i + 1]。

示例 1:

輸入: nums = [4,2,3]
輸出: true
解釋: 你可以通過(guò)把第一個(gè)4變成1來(lái)使得它成為一個(gè)非遞減數(shù)列

貪心的思路在于讓前面子數(shù)組的結(jié)尾元素盡量少,那么后面元素可以滿足非遞減的情況的可能性越大

代碼

class Solution {public boolean checkPossibility(int[] nums) {int n=nums.length,cnt=0;if(n==1) return true;for(int i=0;i<n-1;i++){if(nums[i+1]<nums[i])//當(dāng)出現(xiàn)遞減時(shí){if(++cnt>1) return false;//不滿足的位置加一if(i>0&&nums[i+1]<nums[i-1]) //num[i-1] nums[i] nums[i+1] //當(dāng)出現(xiàn)遞減時(shí),有兩種改變?cè)氐姆椒?#xff0c;分別是 nums[i+1]=nums[i] 或者 nums[i]=nums[i-1] //當(dāng)nums[i+1]<nums[i-1],只能將元素變?yōu)? nums[i-1] nums[i] nums[i] //當(dāng)nums[i+1]>=nums[i-1],就將元素變?yōu)? nums[i-1] nums[i-1] nums[i+1] //上面的兩種序列根據(jù) 已知條件 nums[i-1]<=nums[i] 可以證明均滿足非遞減nums[i+1]=nums[i];}}return true;} }

總結(jié)

以上是生活随笔為你收集整理的leetcode 665. 非递减数列(贪心算法)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。