Leetcode: 402. Remove K Digits
来源:互联网 发布:柳州博腾网络 编辑:程序博客网 时间:2024/05/19 10:11
c++代码:
class Solution {public: string removeKdigits(string num, int k) { string ANS; int keep = num.size() - k; for (int i=0; i<num.size(); i++) { while (ANS.size()>0 && ANS.back()>num[i] && k>0) { ANS.pop_back(); k--; } ANS.push_back(num[i]); } ANS.erase(keep, string::npos); int s = 0; while (s<(int)ANS.size()-1 && ANS[s]=='0') s++; ANS.erase(0, s); return ANS =="" ? "0" : ANS; }};
算法:
**利用贪婪算法的思想,将去掉k次最小转化为连续去掉k次1个数字,每次都最小。去掉1个数字最小也就是去掉从左向右检索的第一个产生降序的数字,即产生最小结果。比如1213,去掉2结果最小。整体思路是利用一个栈存储每一位数字,判定到达产生降序的数字时,就去掉该数字,算作去掉1个数字,此时再检查当前栈顶元素是不是新的产生降序的数字。直到k个数字删除结束。
阅读全文
0 0
- 【Leetcode】402. Remove K Digits
- leetcode 402. Remove K Digits
- LeetCode 402. Remove K Digits
- [LeetCode]402. Remove K Digits
- leetcode 402. Remove K Digits
- LeetCode 402. Remove K Digits
- [leetcode]402. Remove K Digits
- LeetCode 402. Remove K Digits
- LeetCode 402. Remove K Digits
- [LeetCode] 402. Remove K Digits
- [LeetCode]402. Remove K Digits
- LeetCode 402. Remove K Digits
- leetcode-402. Remove K Digits
- leetcode 402. Remove K Digits
- Leetcode: 402. Remove K Digits
- LeetCode: Remove K Digits
- [LeetCode]Remove K Digits
- leetcode:Remove K Digits
- 【安全牛学习笔记】扫描漏洞
- 离线下载Android SDK(100%成功)
- 【第八周】647. Palindromic Substrings
- 以笔记本为工具的工作方法(笔记)
- 表单提交总结(一):表单的提交及验证方法
- Leetcode: 402. Remove K Digits
- 《二战那些事》系列 读书笔记
- C和指针之Eratosthenes-埃拉托斯特尼筛方法找质数
- java注解:完成sql语句的拼接
- [thinkPHP5项目实战_22]管理员登录
- struts2 中Action的配置
- linux笔记
- 20171029D 逆序对+
- Python中的@property和property函数