leetcode 402. Remove K Digits | 402. 移掉 K 位数字(单调栈)
题目
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 位数字(单调栈)相关推荐
- 402. 移掉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 不会包含任何前导零. 示 ...
- 【LeetCode题解】402.移掉K位数字问题
移掉K位数字问题 1.题目描述 2.题解 3.进阶版解法 1.题目描述 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num的长度小于10002,且 ...
- LeetCode 402. 移掉K位数字(贪心,单调栈)
1. 题目 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : ...
- LeetCode 402:移掉K位数字--JAVA
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- leetcode 402. 移掉K位数字(贪心算法)
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
- 402. 移掉K位数字 golang
测试用例 示例 2 : 输入: num = "10200", k = 1 输出: "200" 解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何 ...
- C++算法学习(力扣:402. 移掉K位数字)
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : 输入: nu ...
最新文章
- (一)Android Studio 安装部署 华丽躲坑
- 【转】Unity游戏开发图片纹理压缩方案
- C# 去除文件和文件夹的只读属性
- 企业管理 为什么老板再难,也不会放弃?而员工做得不顺,就想逃走?
- UNIX再学习 -- 线程控制
- python3精要(42)-异步生成器
- 图形学之空间坐标变化之三维图形观察及变换
- 在.NET中调用存储过程
- 微信小程序上线订单管理功能:实现订单管理、售后维权一体化
- Jupyter Notebook Config
- Firefox 扩展“此组件无法安装,因为它未通过验证。”问题的解决
- AdapterView及子类(一)
- Unite之夜|千人派对开启狂欢周末,多重惊喜为你呈现!
- brain segmentation调研--Brain Parcellation as a Pretext Tas
- 深入浅出理解 MyBatis-Plus(最新版3.5.2)
- 水面反光如何拍摄_拍摄水景的技巧方法
- Windows下安装Redis及可视化工具
- python2.7打开webdriver打不开ie_18个提高效率改变生活的网站,为你打开新世界的大门...
- Linux常用基础指令、Linux常用工具(软件包)使用带图详解
- 一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数
热门文章
- POJ - 3258 River Hopscotch(二分水题)
- 华北水利水电大学2012级c语言实验报告,华北水利水电大学2012级c语言实验报告(5)...
- php重定向和伪静态,Apache301重定向和伪静态设置教程(wp程序为例)
- easyui是否容易上手_特色家常菜-清蒸桂鱼,肉质鲜嫩有营养,做法简单容易学...
- 16.IDA-列出函数中存在的全部call
- 【Boost】boost库中thread多线程详解12——线程的分离与非分离
- 【白话科普】10s 从零看懂 H5
- 没登录网页也能个性化推荐?一文详解浏览器指纹
- Netty学习笔记(五)Pipeline
- 建议收藏 | 全面解析 50+条 SQL 语句性能优化策略