题目

https://leetcode.com/problems/remove-k-digits/

题解

本题考察对问题的抽象能力,多写几个例子可以发现,这是一个单调栈问题,维护一个单调不减栈。

class Solution {public String removeKdigits(String num, int k) {Stack<Integer> stack = new Stack<>(); // 单调(不减)栈int del = 0; // 已删除digits数量int i;for (i = 0; i < num.length() && del < k; i++) {while (!stack.isEmpty() && del < k && stack.peek() > num.charAt(i) - '0') {stack.pop();del++;}stack.push(num.charAt(i) - '0');}StringBuilder sb = new StringBuilder();// 调整单调栈容量至不大于num.length-kwhile (del < k) {stack.pop();del++;}// 拼接stack所有值,并将num剩余部分全部顺延拼接while (!stack.isEmpty()) {sb.insert(0, stack.pop());}sb.append(num.substring(i));// 删除前导0int j;for (j = 0; j < sb.length(); j++) {if (sb.charAt(j) != '0') {break;}}return sb.substring(j).length() > 0 ? sb.substring(j) : "0";}
}

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

  1. 402. 移掉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. 【LeetCode题解】402.移掉K位数字问题

    移掉K位数字问题 1.题目描述 2.题解 3.进阶版解法 1.题目描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num的长度小于10002,且 ...

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

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

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

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

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

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

  8. 402. 移掉K位数字 golang

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

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

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

最新文章

  1. (一)Android Studio 安装部署 华丽躲坑
  2. 【转】Unity游戏开发图片纹理压缩方案
  3. C# 去除文件和文件夹的只读属性
  4. 企业管理 为什么老板再难,也不会放弃?而员工做得不顺,就想逃走?
  5. UNIX再学习 -- 线程控制
  6. python3精要(42)-异步生成器
  7. 图形学之空间坐标变化之三维图形观察及变换
  8. 在.NET中调用存储过程
  9. 微信小程序上线订单管理功能:实现订单管理、售后维权一体化
  10. Jupyter Notebook Config
  11. Firefox 扩展“此组件无法安装,因为它未通过验证。”问题的解决
  12. AdapterView及子类(一)
  13. Unite之夜|千人派对开启狂欢周末,多重惊喜为你呈现!
  14. brain segmentation调研--Brain Parcellation as a Pretext Tas
  15. 深入浅出理解 MyBatis-Plus(最新版3.5.2)
  16. 水面反光如何拍摄_拍摄水景的技巧方法
  17. Windows下安装Redis及可视化工具
  18. python2.7打开webdriver打不开ie_18个提高效率改变生活的网站,为你打开新世界的大门...
  19. Linux常用基础指令、Linux常用工具(软件包)使用带图详解
  20. 一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数

热门文章

  1. POJ - 3258 River Hopscotch(二分水题)
  2. 华北水利水电大学2012级c语言实验报告,华北水利水电大学2012级c语言实验报告(5)...
  3. php重定向和伪静态,Apache301重定向和伪静态设置教程(wp程序为例)
  4. easyui是否容易上手_特色家常菜-清蒸桂鱼,肉质鲜嫩有营养,做法简单容易学...
  5. 16.IDA-列出函数中存在的全部call
  6. 【Boost】boost库中thread多线程详解12——线程的分离与非分离
  7. 【白话科普】10s 从零看懂 H5
  8. 没登录网页也能个性化推荐?一文详解浏览器指纹
  9. Netty学习笔记(五)Pipeline
  10. 建议收藏 | 全面解析 50+条 SQL 语句性能优化策略