leetcode 402. 移掉 K 位数字

题目链接:leetcode 402

1.题目

给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。

2.示例

1)示例 1 :
输入:num = “1432219”, k = 3
输出:“1219”
解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。

2)示例 2 :
输入:num = “10200”, k = 1
输出:“200”
解释:移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。

3)示例 3 :
输入:num = “10”, k = 2
输出:“0”
解释:从原数字移除所有的数字,剩余为空就是 0 。

3. 问题分析

先用一个map记录0-9数字对应的从小到大的位置(可以使用栈来存储),同样选择一个数字,我们更希望这个数字的位置靠前,所以从后往前把数字位置压入栈,我们开始每一个位置去判断从0-9是否可以填入当前位置,那么需要满足以下条件:
1)该数字没有被用完
2)该数字位置大于前面使用的所有数字的位置
3)选了该数字后,保守还能凑齐num.size()-k个字符
依次对0-9进行判断并更改对应栈即可
需要注意要对前缀0的情况进行单独处理

4.代码

class Solution {
public: map<int,stack<int>> map1;string removeKdigits(string num, int k) {for(int i=num.size()-1;i>=0;i--)map1[num[i]-'0'].push(i);string ans="";int last=-1;if(num.size()-k==0) return "0";int cnt=0;for(int i=1;i<=num.size()-k;i++){for(int j=0;j<=9;j++)if(map1.count(j)!=0)if(map1[j].size()>0){while(!map1[j].empty()){if(map1[j].top()>last) break;map1[j].pop();}if(!map1[j].empty()&&cnt+num.size()-map1[j].top()>=num.size()-k){last=map1[j].top();char c=j+'0';if(j!=0||ans!="")ans+=c;cnt++;map1[j].pop();break;}}}if(ans=="") return "0";return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/756299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统设备管理

操作系统实现对外接设备的管理功能&#xff0c;主要是I/O设备&#xff0c;unix适用将外部设备抽象为特殊文件&#xff0c;用户用与外部文件相同的方法操作外部设备&#xff0c;具体又可以分为&#xff1a; 人机交互类外部设备&#xff0c;如鼠标键盘等&#xff0c;这类设备数据…

2024年阿里云服务器搭建幻兽帕鲁游戏_保姆级教程

玩转幻兽帕鲁服务器&#xff0c;阿里云推出新手0基础一键部署幻兽帕鲁服务器教程&#xff0c;傻瓜式一键部署&#xff0c;3分钟即可成功创建一台Palworld专属服务器&#xff0c;成本仅需26元&#xff0c;阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

SpringBoot集成WebService

1&#xff09;添加依赖 <dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-spring-boot-starter-jaxws</artifactId><version>3.3.4</version><exclusions><exclusion><groupId>javax.validation<…

【Linux】线程预备知识{远程拷贝/重入函数与volatile关键字/认识SIGCHILD信号/普通信号/实时信号}

文章目录 0.远程拷贝1.重入函数与volatile关键字2.认识SIGCHILD信号3.普通信号/实时信号 0.远程拷贝 打包资源&#xff1a;tar czf code.tgz *远程传输&#xff1a;scp code.tgz usr服务器ip:/home/usr/路径解压&#xff1a;tar xzf code.tgz 1.重入函数与volatile关键字 先看…

默写单词cpp(初学者版本)

笔摔坏了直接使用版:yum:仔细学习版:yum:1.直接使用版:yum:&#xff08;文件使用规范&#xff09;(1)文件(2)使用规范 2.仔细学习版。将会讲各个函数的功能和细节。今天太晚了&#xff0c;明天再写。 笔摔坏了 在一个阳光明媚的早晨&#xff0c;我愉快的奋笔疾书&#xff0c;抄…

【Stable Diffusion】专栏介绍和文章索引(持续更新中)

目录 1 背景2 思考3 文章索引&#xff08;持续更新中&#xff09;3.1 入门3.2 初级3.3 中级3.3 高级 1 背景 最近开始学习AIGC&#xff0c;对Stable Diffusion比较感兴趣&#xff0c;所以新建了这个专栏&#xff0c;来记录自己在使用和学习Stable Diffusion的一些方法、资料以…

推荐4个c++进度条开源库

在C中&#xff0c;有许多开源库可以帮助你创建进度条。以下是一些常用的C进度条库&#xff1a; 1. **indicators**: - GitHub链接: [https://github.com/p-ranav/indicators](https://github.com/p-ranav/indicators) - 特点: 轻量级&#xff0c;易于使用&#xff0c;支…

OpenCV学习笔记(十)——利用腐蚀和膨胀进行梯度计算以及礼帽和黑帽

梯度计算 在OpenCV中&#xff0c;梯度计算是图像处理中的一个基本操作&#xff0c;用于分析图像中像素值的变化速率的方向&#xff0c;其中梯度的方向是函数变化最快的方向&#xff0c;因此在图像中&#xff0c;沿着梯度方向可以找到灰度值变化最大的区域&#xff0c;这通常是…

我的自建博客之旅04之Halo

我的自建博客之旅04之Halo Halo是我无意间发现的一款博客框架,如果你讨厌Hexo,Vuepress等静态框架本地编辑,构建部署等方式,如果你想要一款一次搭建,前台是博客,后台是文章维护,并且支持各种定制化折腾的博客框架,可能Halo会比较适合你。 因为我个人还是比较偏技术,…

android11 添加实时记录logcat日志保存到data目录

软件平台&#xff1a;Android11 硬件平台&#xff1a;高通QCS6125 需求&#xff1a;设备即将上线&#xff0c;需要后台实时采集logcat日志&#xff0c;保存到相应目录下&#xff0c;方便app端上传到服务器&#xff0c;从而分析问题。 改动集中在logcat相关部分&#xff1a; …

【数据结构取经之路】栈

目录 引言 栈的性质 顺序栈 栈的基本操作 初始化 销毁 插入 删除 判空 取栈顶元素 栈的大小 完整代码&#xff1a; 引言 栈(stack)&#xff0c;可以用数组实现&#xff0c;也可以用链表实现。用数组实现的栈叫顺序栈&#xff0c;用链表实现的栈叫链式栈&#…

【Python 48小时速成 4】注释

在 Python 中&#xff0c;注释是用来解释代码的说明文本&#xff0c;不会被解释器执行。Python 中的注释以 # 开头&#xff0c;可以是单行注释或多行注释。以下是注释的使用示例&#xff1a; # 这是一个单行注释""" 这是一个多行注释 多行注释可以跨越多行 在三…

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载材质文件Mtl 中的纹理图片最简实例(十六)

文章目录 前言一、3d 立方体 model 属性相关文件1. cube.obj2. cube.Mtl3. 纹理图片 cordeBouee4.jpg二、代码实例1. 依赖库和头文件1.1 assimp1.2 stb_image.h2. egl_wayland_obj_cube.cpp3. Matrix.h 和 Matrix.cpp4. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c5.…

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…

02 Statement和PreparedStatement

文章目录 StatementPreparedStatement Statement (1)相同的SQL语句&#xff0c; 重复执行第n次&#xff0c;编译n次 — 效率低 (2)Statement sql中的参数赋值 直接通过字符串拼接&#xff0c;可能会有非法sql注入&#xff0c;导致数据泄露 import java.sql.*; import java.util…

【Leetcode-189.轮转数组】

题目&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3…

理论学习:KL散度

KL散度&#xff08;Kullback-Leibler Divergence&#xff09;&#xff0c;也称为相对熵&#xff0c;是衡量两个概率分布差异的一种方法。想象一下&#xff0c;你有两本关于同一个话题但写法不同的书。如果你想知道这两本书实际上讲的是不是同一个故事&#xff0c;你可以通过比较…

Hero Talk|无缝扩展:Kubernetes 上的 Amazon Aurora 分片和流量管理

亚马逊云科技 Data Hero 潘娟正在打开开源之门。作为“2020 中国开源先锋人物”以及“2021 OSCAR 尖峰开源人物”奖项获得者&#xff0c;她致力于赋能数据领域的开发者&#xff0c;助力他们把握先机。在亚马逊云科技 re:Invent 2023 大会上&#xff0c;潘娟就 Kubernetes 上的 …

杂题——1188: 做幻方

题目描述 Apple最近迷上了做幻方&#xff0c;Apple还是个中高手&#xff0c;只要你说个奇数N就能把N*N的幻方做出来。其实你可以比他做得更好的。Apple总是画得很乱&#xff0c;而你可以利用程序排得很整齐^_^ 幻方的要求&#xff1a;每一行&#xff0c;每一列&#xff0c;还有…

外贸网站建设需要注意什么

在外贸网站建设过程中&#xff0c;需要注意以下几点&#xff1a; 多语言支持&#xff1a;考虑目标市场的语言需求&#xff0c;提供多语言版本的网站&#xff0c;以便更好地与国际客户进行沟通和交流。 跨境支付和物流&#xff1a;为国际客户提供方便快捷的跨境支付方式&#x…