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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode738. 单调递增的数字(中等)

發布時間:2023/12/29 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode738. 单调递增的数字(中等) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



思路:貪心
實現細節:從左到右遍歷,遇到第一個將要下降的數字[i]將其減少1,右側的都改成9即可,如果遍歷到末尾了則直接return

這樣可能出現的問題:減1之后,可能[i-1]>[i](即[i-1]和[i]剛開始相等),此時i-1需要減1,直到前面的都滿足遞增,從最左邊-1處右邊都改成’9’

class Solution { public:int monotoneIncreasingDigits(int m) {string s = to_string(m);int n = s.size();int i = 0;while (i < n - 1 && s[i] <= s[i+1]) i++;if (i == n - 1) return m;//這里不太好寫i++; while (i > 0 && s[i - 1] > s[i]) { s[i - 1]--;i--;}//上面這一段不好寫for (int k = i + 1; k < n; ++k) s[k] = '9'; //return stoi(s);} };

代碼上的難點
1:由于是根據前面的值大于當前位置的值,然后把當前位置-1,下標是0時不好寫,i - 1會越界
應該向上面這種寫法:i指向第一個下降了的位置,通過i-1來減,剛開始循環條件必然滿足,循環結束后i指向的是第一個被修改的元素。
2:k從i+1開始,即修改元素的下一個位置開始,都賦為‘9’。

總結

以上是生活随笔為你收集整理的leetcode738. 单调递增的数字(中等)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。