leetcode402. 移掉 K 位数字
题目:402. 移掉 K 位数字
参考:ye-shang-6
依据数字位数越高影响越大,从最高位挑选数字。例:num = 1432219, k=3,删去k=3个数字,那么就是保留length-k=7-3=4个数字。首先需要挑选首位数字,保证尽量小并且在num中的位置尽量靠左。可以将num = 1432219分为 1432 和 219两部分(保留最后3个作为保底,在之前的4位中找最小)此时start = 0, end = k。在[start,end]中选取一个最小的进行保留,返回最小数字的下标min_pos。找第二位的时候start = min_pos + 1. end +=1 如此类推直到选完 n-k 次。
对于前缀0,选择不把选取过程中的首个0加入结果字符串ans 但是 算作一次挑选step进行处理。
class Solution {public:string removeKdigits(string num, int k) {if(num == "0" || num.length() == k) return "0";int step = num.length() - k; // 等价于从num中选取(num-k)个数字int minpos = -1; // 上一位被挑选值的位置string ans = "";while(step){// 挑选这一步的数字int start = minpos + 1;int end = num.length() - step;char minval = num[start];minpos = start;for(int i=start+1; i<=end; i++){if(num[i] < minval) {minval = num[i];minpos = i;}}step--;if(minval == '0' && ans == "") continue;ans.push_back(minval);}return (ans == "")? "0" : ans;}
};
leetcode402. 移掉 K 位数字相关推荐
- leetcode402. 移掉K位数字
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- LeetCode 402. 移掉K位数字 中等难度
402. 移掉K位数字 题目: 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导 ...
- Java实现 LeetCode 402 移掉K位数字
402. 移掉K位数字 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示 ...
- 402. 移掉K位数字(单调栈)
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- LeetCode 402. 移掉K位数字(贪心,单调栈)
1. 题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : ...
- 贪心---移掉K位数字
题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: ...
- C++算法学习(力扣:402. 移掉K位数字)
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- LeetCode 402:移掉K位数字--JAVA
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- leetcode-402 移掉K位数组
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- LeetCode移掉k位数字(贪心算法)python
描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. num的长度小于10002,且将≥k.给定的num不包含任何前导零. 您在真实的面试中是否遇到过这个题? ...
最新文章
- git 使用详解(5)—— get log 查看提交历史
- TabLayout让Fragment在ViewPager中的滑动切换更优雅
- 第二阶段冲刺10天 第一天
- SpringCloud Greenwich(一)注册中心之nacos、Zuul和 gateway网关配置
- 取模(mod)与取余(rem)的区别——Matlab学习笔记
- STM32 RTC 使用
- java代码写selector_javaNIO:选择器--实践 Selector
- TypeScript:函数进阶
- ai智能时代教育内容的改变_人工智能正在改变我们的评论方式
- 2021:Python的下载安装教程(很详细,初学者也能懂)
- 杰理AD15 玩具类编解码音频芯片
- 如何学习单片机?学习单片机的四个步骤
- Win10压缩卷提示磁盘空间不足
- 如何编制试算平衡表_会计试算平衡表怎么编制
- CC00056.bigdatajava——|Java分支结构.V06|——|Java.v06|ifelseifelse.v02|个人所得税计算方式一|
- 二值形态学之击中击不中变换
- 和大家分享一款使用PHP+MYSQL搭建的OA办公管理系统源码
- 终于搞定Paypal了
- iOS及Mac开源项目和学习资料
- 夜神模拟器 开发 重新连接
热门文章
- [4G+5G专题-137]: 终端 - 射频前端(滤波器、功率放大器)详解
- Application provided invalid, non monotonically increasing dts to muxer in stream
- 微信公众平台测试账号本地配置
- 酒店管理系统用什么服务器,用勤哲Excel服务器实现酒店管理系统
- SkyLine——3DGIS三维地理信息系统软件产品介绍
- unity 物体高亮显示
- 条款30:透彻了解inlining的里里外外
- 【数据分析与可视化】Python的input和output
- 自助建站工具 搭建出来的网站真的适合SEO吗?
- 迟来的2015年终总结