给定一个以字符串表示的非负整数 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

个人解题过程:
这种图乍一看很简单,1432219,要删一个数,如果删1,就是432219,也就是4开头的,如果删4,就是1开头的,肯定是删4不删1,咱们再来看看4和3,如果删4那就是13开头,如果删3那就是14开头,这种题肯定开头越小越好,那么后面删4还是删2相信已经没有了困惑。那么规律就来了,先删高位的,具体的话呢,我们得出一个结论,从高位开始遍历,如果左边比右边大,就删左边的数。

class Solution {public:string removeKdigits(string num, int k) {//先判断字符串长度小于等于k的时候不禁删,我直接返回的0可能题目设置有问题,我感觉小于的时候应该返回""if(num.size()<=k) return "0";//开始一次k循环删一个for(;k>0;k--){for(int i=0;i<num.size();i++)if(num[i]>num[i+1]){for(int j=i;j<num.size()-1;j++)num[j]=num[j+1];break;}num.pop_back();}//开头有0删了while(num.size()>1 && num[0] == '0'){for(int j=0;j<num.size()-1;j++)num[j]=num[j+1];num.pop_back();}return num;}
};

C++算法学习(力扣: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位数字(贪心算法)

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

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

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

  5. 402. 移掉K位数字(单调栈)

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

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

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

  7. 402. 移掉K位数字 golang

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

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

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

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

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

最新文章

  1. Spring核心技术原理-(1)-通过Web开发演进过程了解一下为什么要有Spring?
  2. 【01】什么是AJAX
  3. OPW-00001: Unable to open password-file
  4. django使用mysql事务处理_Django中MySQL事务的使用
  5. 程序员谈谈我的职场观(三)
  6. Qt工作笔记-自定义QSortFilterProxyModel实现多列分别过滤
  7. Python 回归 普通最小二乘法(Ordinary Least Squares)
  8. redhat6.9系统telnet命令rpm包安装
  9. 实例3 输出由“*”组成的三角形
  10. java添加关闭窗口事件_Java开发网 - 如何给JInternalFrame类的窗口添加关闭事件?...
  11. Illustrator 教程,如何在 Illustrator 文档中缩放和平移?
  12. [数字图像处理]模糊算法用于图像增强
  13. Ubuntu 安装之后无法连接网络问题
  14. 不止防JSON技术绕过,RASP相比WAF的七大技术优势
  15. 赵一新:通勤研究与城市治理
  16. cvte java_cvte一面——java开发工程师
  17. vue项目生成微信支付二维码(web端),其他二维码也可以生成
  18. HSY 点餐(数论)
  19. 2022-03-06 近期的低劣的管理者的几点观察
  20. discuz后台主导航栏菜单中添加新的菜单项的方法

热门文章

  1. java 短连接+MD5加密短链接
  2. 程序员面试金典——4.7最近公共祖先
  3. 协方差矩阵、相关矩阵、相关函数的联系与区别
  4. 【干货】深度学习实验流程及PyTorch提供的解决方案
  5. 【转载】 C#中使用Sum方法对List集合进行求和操作
  6. Razor语法(四)
  7. AForge.net简介和认识
  8. 高通针对LED应用的点阵字库解决方案 — 支持多种字号字体显示
  9. 我喜欢的 Linux shell 玩法
  10. 字符串json转成json对象