题目: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 位数字相关推荐

  1. leetcode402. 移掉K位数字

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

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

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

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

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

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

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

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

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

  6. 贪心---移掉K位数字

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

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

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

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

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

  9. leetcode-402 移掉K位数组

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

  10. LeetCode移掉k位数字(贪心算法)python

    描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. num的长度小于10002,且将≥k.给定的num不包含任何前导零. 您在真实的面试中是否遇到过这个题? ...

最新文章

  1. git 使用详解(5)—— get log 查看提交历史
  2. TabLayout让Fragment在ViewPager中的滑动切换更优雅
  3. 第二阶段冲刺10天 第一天
  4. SpringCloud Greenwich(一)注册中心之nacos、Zuul和 gateway网关配置
  5. 取模(mod)与取余(rem)的区别——Matlab学习笔记
  6. STM32 RTC 使用
  7. java代码写selector_javaNIO:选择器--实践 Selector
  8. TypeScript:函数进阶
  9. ai智能时代教育内容的改变_人工智能正在改变我们的评论方式
  10. 2021:Python的下载安装教程(很详细,初学者也能懂)
  11. 杰理AD15 玩具类编解码音频芯片
  12. 如何学习单片机?学习单片机的四个步骤
  13. Win10压缩卷提示磁盘空间不足
  14. 如何编制试算平衡表_会计试算平衡表怎么编制
  15. CC00056.bigdatajava——|Java分支结构.V06|——|Java.v06|ifelseifelse.v02|个人所得税计算方式一|
  16. 二值形态学之击中击不中变换
  17. 和大家分享一款使用PHP+MYSQL搭建的OA办公管理系统源码
  18. 终于搞定Paypal了
  19. iOS及Mac开源项目和学习资料
  20. 夜神模拟器 开发 重新连接

热门文章

  1. [4G+5G专题-137]: 终端 - 射频前端(滤波器、功率放大器)详解
  2. Application provided invalid, non monotonically increasing dts to muxer in stream
  3. 微信公众平台测试账号本地配置
  4. 酒店管理系统用什么服务器,用勤哲Excel服务器实现酒店管理系统
  5. SkyLine——3DGIS三维地理信息系统软件产品介绍
  6. unity 物体高亮显示
  7. 条款30:透彻了解inlining的里里外外
  8. 【数据分析与可视化】Python的input和output
  9. 自助建站工具 搭建出来的网站真的适合SEO吗?
  10. 迟来的2015年终总结