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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

leetcode-402 移掉K位数组

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode-402 移掉K位数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一個以字符串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。

注意:

num 的長度小于 10002 且 ≥ k。
num 不會包含任何前導零。

示例 1 :

輸入: num = “1432219”, k = 3
輸出: “1219”
解釋: 移除掉三個數字 4, 3, 和 2形成一個新的最小的數字 1219。

針對該問題,顯然很好的解決辦法便是貪心
從高位開始遍歷整數,即在移除的數字在k的范圍內,盡可能選擇移除較小的數值

實現上使用棧的形態進行管理,棧保存最終的移除后的結果,并且動態變化;當出現元素小于棧頂元素的情況下將棧頂元素移除,在棧不為空或者 元素不等于零時 將該元素放入棧中。

實現如下:

string removeKdigits(string num, int k) {vector<int> S;string result = "";for (int i = 0;i < num.length(); ++i) {int number = num[i] - '0';while(S.size() != 0 && S[S.size() - 1] > number && k) {S.pop_back();k--;}if (number != 0 || S.size()) {//處理前導零的情況S.push_back(number);}}while(S.size() && k) {S.pop_back();k--;}for (int i = 0;i < S.size(); ++i) {result.append(1,'0' + S[i]);}if (result == "") {return "0";}return result;
}

總結

以上是生活随笔為你收集整理的leetcode-402 移掉K位数组的全部內容,希望文章能夠幫你解決所遇到的問題。

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