LeetCode 402 移掉K位數字 HERODING的LeetCode之路
給定一個以字串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。
注意:
num 的長度小於 10002 且 ≥ k。
num 不會包含任何前導零。
示例 1 :
輸入: num = “1432219”, k = 3
輸出: “1219”
解釋: 移除掉三個數字 4, 3, 和 2 形成一個新的最小的數字 1219。
示例 2 :
輸入: num = “10200”, k = 1
輸出: “200”
解釋: 移掉首位的 1 剩下的數字為 200. 注意輸出不能有任何前導零。
示例 3 :
輸入: num = “10”, k = 2
輸出: “0”
解釋: 從原數字移除所有的數字,剩餘為空就是0。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/remove-k-digits
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題思路:
思路其實很簡單,就是遍歷num,放入res中,如果比遍歷到的數字要大,就彈出,最後考慮一下res首部是0的情況還有res為空的情況,程式碼如下:
class Solution {
public:
string removeKdigits(string num, int k) {
// 儲存結果
string res;
int len = num.size();
int m = len - k;
if(len == k){
return "0";
}
for(int i = 0; i < len; i ++){
// 如果k不為0且res長度不為0且最後的數大於遍歷到的數字
while(k && res.size() && res.back() > num[i]){
res.pop_back();
-- k;
}
res.push_back(num[i]);
}
res.resize(m);
while(!res.empty() && res[0] == '0'){
res.erase(res.begin());
}
if(!res.empty()){
return res;
}else{
return "0";
}
}
};
/*作者:heroding
連結:https://leetcode-cn.com/problems/remove-k-digits/solution/zui-rong-yi-li-jie-de-si-lu-by-heroding/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。*/
相關文章
- LeetCode 164 最大間距 HERODING的LeetCode之路LeetCode
- LeetCode 143 重排連結串列 HERODING的LeetCode之路LeetCode
- [LeetCode] 402. Remove K DigitsLeetCodeREMGit
- LeetCode 188 買賣股票的最佳時機IV HERODING的LeetCode之路LeetCode
- leetcode 191 位1的個數LeetCode
- LeetCode 2544[交替數字和]LeetCode
- LeetCode:尋找丟失的數字LeetCode
- LeetCode 13[羅馬數字轉整數]LeetCode
- leetcode 338 位元位計數LeetCode
- LeetCode - 1365 - 有多少小於當前數字的數字LeetCode
- 【leetcode.191】位1的個數LeetCode
- leetcode.1356. 根據數字二進位制下 1 的數目排序LeetCode排序
- leetcode-1356. 根據數字二進位制下 1 的數目排序LeetCode排序
- leetcode1356. 根據數字二進位制下 1 的數目排序LeetCode排序
- LeetCode3270[求出數字答案]LeetCode
- [LeetCode] K-th Smallest Prime Fraction 第K小的質分數LeetCodeFraction質分數
- LeetCode刷題之路:67. 二進位制求和LeetCode
- #leetcode刷題之路1-兩數之和LeetCode
- LeetCode 力扣 羅馬數字轉整數LeetCode力扣
- LeetCode1365有多少小於當前數字的數字LeetCode
- MYSQL練習題:給定數字的頻率查詢中位數(Leetcode困難)MySqlLeetCode
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- LeetCode-374-猜數字大小LeetCode
- leetcode13題——羅馬數字轉整數LeetCode
- [LeetCode] Integer to Roman 整數轉化成羅馬數字LeetCode
- [LeetCode] Roman to Integer 羅馬數字轉化成整數LeetCode
- 數字中的1——leetcode233LeetCode
- LeetCode 只出現一次的數字LeetCode
- 【LeetCode】738. 單調遞增的數字LeetCode
- 【leetcode】60. Permutation Sequence 全排列的第k位序的排列形式LeetCode
- LeetCode-兩個排序陣列的中位數LeetCode排序陣列
- Leetcode 刷題 ------1365.有多少小於當前數字的數字LeetCode
- 演算法題:刪除 K 位數字演算法
- LeetCode_Python(13)_羅馬數字轉整數LeetCodePython
- python-leetcode13羅馬數字轉整數PythonLeetCode
- LeetCode 只出現一次的數字IILeetCode
- LeetCode 只出現一次的數字IIILeetCode
- LeetCode每日一題: 位1的個數(No.191)LeetCode每日一題