C++算法学习(力扣:402. 移掉K位数字)
给定一个以字符串表示的非负整数 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位数字)相关推荐
- LeetCode 402. 移掉K位数字 中等难度
402. 移掉K位数字 题目: 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导 ...
- Java实现 LeetCode 402 移掉K位数字
402. 移掉K位数字 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示 ...
- leetcode 402. 移掉K位数字(贪心算法)
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- LeetCode 402. 移掉K位数字(贪心,单调栈)
1. 题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : ...
- 402. 移掉K位数字(单调栈)
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- 402.移掉K位数字,使得剩下数字最小
思路 这道题让我们从一个字符串数字中删除 k 个数字,使得剩下的数最小.也就说,我们要保持原来的数字的相对位置不变. 以题目中的 num = 1432219, k = 3 为例,我们需要返回一个长度为 ...
- 402. 移掉K位数字 golang
测试用例 示例 2 : 输入: num = "10200", k = 1 输出: "200" 解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何 ...
- leetcode 402. Remove K Digits | 402. 移掉 K 位数字(单调栈)
题目 https://leetcode.com/problems/remove-k-digits/ 题解 本题考察对问题的抽象能力,多写几个例子可以发现,这是一个单调栈问题,维护一个单调不减栈. cl ...
- LeetCode 402:移掉K位数字--JAVA
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
最新文章
- Spring核心技术原理-(1)-通过Web开发演进过程了解一下为什么要有Spring?
- 【01】什么是AJAX
- OPW-00001: Unable to open password-file
- django使用mysql事务处理_Django中MySQL事务的使用
- 程序员谈谈我的职场观(三)
- Qt工作笔记-自定义QSortFilterProxyModel实现多列分别过滤
- Python 回归 普通最小二乘法(Ordinary Least Squares)
- redhat6.9系统telnet命令rpm包安装
- 实例3 输出由“*”组成的三角形
- java添加关闭窗口事件_Java开发网 - 如何给JInternalFrame类的窗口添加关闭事件?...
- Illustrator 教程,如何在 Illustrator 文档中缩放和平移?
- [数字图像处理]模糊算法用于图像增强
- Ubuntu 安装之后无法连接网络问题
- 不止防JSON技术绕过,RASP相比WAF的七大技术优势
- 赵一新:通勤研究与城市治理
- cvte java_cvte一面——java开发工程师
- vue项目生成微信支付二维码(web端),其他二维码也可以生成
- HSY 点餐(数论)
- 2022-03-06 近期的低劣的管理者的几点观察
- discuz后台主导航栏菜单中添加新的菜单项的方法