栈--找最小数

题目描述

给一个正整数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))
相关推荐
Ws_6 小时前
C#学习 Day2
开发语言·学习·c#
lishi_19916 小时前
一键部署MoviePilotV2实现NAS全自动追剧
python·媒体·moviepilot
杰克尼6 小时前
天机学堂复习总结(day03-day04)
java·开发语言·redis·elasticsearch·spring cloud
x***r1517 小时前
jdk-11.0.16.1_windows使用步骤详解(附JDK 11环境变量配置与验证教程)
java·开发语言·windows
EllinY7 小时前
CF2217E Definitely Larger 题解
c++·笔记·算法·构造
测试开发-学习笔记8 小时前
代码详细解释
python
u0119608238 小时前
ray-k8s部署
python
luck_bor8 小时前
File类&递归作业
java·开发语言
PAK向日葵10 小时前
我用 C++ 写了一个轻量级 Python 虚拟机,刚刚开源
c++·python·开源