栈--找最小数

题目描述

给一个正整数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))
相关推荐
__Yvan2 分钟前
Kotlin 的 ?.let{} ?: run{} 真的等价于 if-else 吗?
android·开发语言·前端·kotlin
左左右右左右摇晃2 分钟前
Java并发——线程间的通信
java·开发语言
小小小米粒3 分钟前
[特殊字符] 正常部署 AI + 流式输出(Stream)[特殊字符] 为什么会 CPU 炸了?
开发语言·python
Yzzz-F5 分钟前
Problem - D2 - Codeforces
算法
烟花巷子5 分钟前
C++中的解释器模式
开发语言·c++·算法
站大爷IP6 分钟前
Python异步编程:asyncio核心用法与避坑指南
python
暮冬-  Gentle°9 分钟前
C++中的策略模式高级应用
开发语言·c++·算法
皙然11 分钟前
吃透进程与线程:从概念到实战,破解并发编程核心难题
java·开发语言
2401_8796938712 分钟前
C++中的代理模式高级应用
开发语言·c++·算法
地平线开发者12 分钟前
【地平线J6工具链入门教程】J5到J6算法部署迁移指南
人工智能·算法·自动驾驶·汽车