当前位置: 首页 > news >正文

移掉 K 位数字

题目链接

移掉 K 位数字

题目描述

注意点

  • 1 <= k <= num.length <= 10^5
  • num 仅由若干位数字(0 - 9)组成
  • 除了 0 本身之外,num 不含任何前导零

解答思路

  • 关键是怎样移掉K位数字保证移除后的数字是最小的。观察规律可得,为了保证数字更小,需要保证高位的数字更小,也就是需要保证num从高到低是递增的
  • 可以使用栈存储高位的数字,栈顶的数字最大,对于任意一个位置的数字,如果其比栈顶的数字更小,且此时K > 0(能够移除数字),则将栈中所有比当前数字小的数字都出栈,直到总共移除了K个数字或栈中数字都递增为止

代码

class Solution {public String removeKdigits(String num, int k) {Deque<Character> dq = new ArrayDeque<>();int n = num.length();for (int i = 0; i < n; i++) {char c = num.charAt(i);while (k > 0 && !dq.isEmpty() && c < dq.peek()) {dq.pop();k--;}dq.push(c);}// 栈中元素全部递增,但是还要继续移除数字while (k > 0) {dq.pop();k--;}StringBuilder sb = new StringBuilder();while (!dq.isEmpty()) {char c = dq.pollLast();if (sb.length() != 0 || c != '0') {sb.append(c);}}if (sb.length() == 0) {return "0";}return sb.toString();}
}

关键点

  • 找到移掉K位数字后保证数字最小的规律
  • 移掉K位数字后如果String为空则返回0
  • 如果栈中元素都递增后仍然没有移除K位数字,则还需要继续移除末尾的数字,直到移除了K位数字为止

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RK3568 安卓12 EC20模块NOCONN没有ip的问题(已解决)
  • elasticsearch过滤器filter:原理及使用
  • [Linux]基本指令(二)
  • 【C语言】深入解析希尔排序
  • Spring Boot项目的控制器貌似只能get不能post问题
  • Scala之基础面向对象编程
  • [Linux CMD] 文件编辑 nano (待更新)
  • WSL-Ubuntu20.04训练环境配置
  • 所有权与生命周期:Rust 内存管理的哲学
  • 什么是跨链交换,以bitget钱包为例
  • 谷歌Gmail账号又被封了?原因与解决方法
  • excel及panda的部分内容
  • ffmpeg 时间相关--时间基,timebase,pts,dts,duration
  • 充气膜游泳馆安全吗—轻空间
  • Log4j的原理及应用详解(四)
  • Django 博客开发教程 16 - 统计文章阅读量
  • js正则,这点儿就够用了
  • Making An Indicator With Pure CSS
  • Mysql优化
  • node入门
  • php ci框架整合银盛支付
  • Spring声明式事务管理之一:五大属性分析
  • 分布式任务队列Celery
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 类orAPI - 收藏集 - 掘金
  • 删除表内多余的重复数据
  • 想写好前端,先练好内功
  • 用 Swift 编写面向协议的视图
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • %check_box% in rails :coditions={:has_many , :through}
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (七)Activiti-modeler中文支持
  • (三)终结任务
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *2 echo、printf、mkdir命令的应用
  • .NET : 在VS2008中计算代码度量值
  • .NET C# 使用 iText 生成PDF
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET命名规范和开发约定
  • .NET性能优化(文摘)
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @TableLogic注解说明,以及对增删改查的影响
  • []FET-430SIM508 研究日志 11.3.31
  • [ajaxupload] - 上传文件同时附件参数值
  • [Android] Amazon 的 android 音视频开发文档