栈--找最小数

题目描述

给一个正整数NUM1,计算出新正整数NUM2,NUM2为NUM1中移除N位数字后的结果,需要使得NUM2的值最小。

输入描述

输入的第一行为一个字符串,字符串由0-9字符组成,记录正整数NUM1,NUM1长度小于32。

输入的第二行为需要移除的数字的个数,小于NUM1长度。

输出描述

输出一个数字字符串,记录最小值NUM2。

用例1

输入

2615371

4

输出

131

python 复制代码
NUM1=input()
N = int(input())
remain = len(NUM1)-N
stack=[]
for num in NUM1:
    while stack and stack[-1]>num and N>0:
        stack.pop()
        N-=1
    stack.append(num)
# 如果我们仍然需要移除数字,并且栈的长度超过了不需要移除的数字的数量
# 则从栈的末尾移除多余的元素(因为它们是较大的数字)
while len(stack)>remain:
    stack.pop()
while stack[0]=='0' and len(stack)!=1:
    stack.pop(0)
print(''.join(stack))
相关推荐
TechPioneer_lp几秒前
腾讯测试开发岗位 LeetCode 高频题汇总(2026版)
数据结构·算法·大厂笔试·leetcode高频题·腾讯测试开发·大厂校招·大厂春招
551只玄猫3 分钟前
【操作系统原理 实验报告6】磁盘调度算法
算法·操作系统·os·实验报告·操作系统原理·磁盘调度算法·磁盘调度
天下无敌笨笨熊3 分钟前
C#异步开发探微
开发语言·c#
2401_833197734 分钟前
更优雅的测试:Pytest框架入门
jvm·数据库·python
2301_793804697 分钟前
C++中的访问者模式变体
开发语言·c++·算法
2501_9454248011 分钟前
模板代码版本兼容
开发语言·c++·算法
沉鱼.4412 分钟前
最小生成树
算法
m0_5180194814 分钟前
C++中的委托构造函数
开发语言·c++·算法
m0_7434703716 分钟前
高性能计算框架实现
开发语言·c++·算法