给定一个以字符串表示的非负整数 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。
唉,打完区域赛就没敲过代码了,思维本来就不行,现在更不行了。。
这其实就是一个单调栈的思维题,维护一个单调递增栈。对于要削减的数字,肯定是要削减大的,靠前的数字。那么我们用单调栈维护栈顶,一直到k减为0。不能有前导零,所以前导零不能进入栈顶。第一次用Leecode,格式好烦人啊。
代码如下:

class Solution {public:string removeKdigits(string num, int k) {stack<char>s;int len=num.length();while(!s.empty()) s.pop();for(int i=0;i<len;i++){while(!s.empty()&&num[i]<s.top()&&k){s.pop();k--;}if(s.empty()&&num[i]=='0') continue;s.push(num[i]);}while(!s.empty()&&k){s.pop();k--;}string x;while(s.size()) x+=s.top(),s.pop();reverse(x.begin(),x.end());if(x.length()==0) return "0";else return x;}
};

努力加油a啊,(o)/~

402. 移掉K位数字(单调栈)相关推荐

  1. LeetCode 402. 移掉K位数字 中等难度

    402. 移掉K位数字 题目: 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导 ...

  2. Java实现 LeetCode 402 移掉K位数字

    402. 移掉K位数字 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示 ...

  3. LeetCode 402. 移掉K位数字(贪心,单调栈)

    1. 题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : ...

  4. C++算法学习(力扣:402. 移掉K位数字)

    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...

  5. leetcode 402. 移掉K位数字(贪心算法)

    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...

  6. leetcode 402. Remove K Digits | 402. 移掉 K 位数字(单调栈)

    题目 https://leetcode.com/problems/remove-k-digits/ 题解 本题考察对问题的抽象能力,多写几个例子可以发现,这是一个单调栈问题,维护一个单调不减栈. cl ...

  7. 402.移掉K位数字,使得剩下数字最小

    思路 这道题让我们从一个字符串数字中删除 k 个数字,使得剩下的数最小.也就说,我们要保持原来的数字的相对位置不变. 以题目中的 num = 1432219, k = 3 为例,我们需要返回一个长度为 ...

  8. 402. 移掉K位数字 golang

    测试用例 示例 2 : 输入: num = "10200", k = 1 输出: "200" 解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何 ...

  9. LeetCode 402:移掉K位数字--JAVA

    给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...

最新文章

  1. KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
  2. 深度学习综述:Hinton、Yann LeCun和Bengio经典重读
  3. 【Java】日期/事件字符串包含TZ
  4. MPLS服务合同到期了,是否该续签?
  5. 三维重建:SLAM的尺度和方法论问题
  6. ASP.NET Core 网站运行时修改设置如何自动生效
  7. 红帽子RedHat Linux 9.0
  8. CF914E Palindromes in a Tree
  9. 在linux环境下模拟实现简单命令解释器_git bash 竟然不支持 tree 命令
  10. gog 中 git提交push到远程时出现error: RPC failed; HTTP 413 curl 22
  11. 女黑客登场:轻松破解APP,共享单车任我骑!
  12. 项目经理需要具备的技能
  13. 智齿科技B+轮获投1.5亿,为智能云客服领域最大单笔融资
  14. 为什么程序员要学linux?
  15. 亲戚B (普通并查集)
  16. Linux内核分析2:一个简单的时间片轮转多道程序内核代码分析
  17. 【移动网络】Ch. 1 5G标准化与频谱
  18. 时间片(time-slicing)轮循调度(round-robin scheduling)
  19. 3D建模怎么学,3D游戏建模怎么学
  20. 基于simulink的三相STATCOM实现直流电容的稳压控制,采用IpIq控制方法和电流空间和电压空间的PWM方法控制

热门文章

  1. uni-app 微信小程序自定义radio样式
  2. 信息收集——网站克隆和钓鱼邮件
  3. 如何在uniapp中引入阿里字体图标
  4. swiper.js使用心得
  5. nod32可以限制软件安装么_玻璃钢法兰安装时可以别劲么 玻璃钢法兰安装视频
  6. 关于Android studio run 按钮灰色无法运行的总结
  7. android阿里滑块验证码,在Android App中接入HTML5滑块验证
  8. linux怎么衡量负载大小,如何查看linux机器的平均负载
  9. 27.思科防火墙(ASA)
  10. 在装好的xp系统里面如何添加新的硬件设备