栈--找最小数

题目描述

给一个正整数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))
相关推荐
清酒难咽2 分钟前
算法案例之分治法
c++·经验分享·算法
wen__xvn4 分钟前
代码随想录算法训练营DAY25第七章 回溯算法 part04
算法·leetcode·深度优先
亲爱的非洲野猪7 分钟前
动态规划进阶:序列DP深度解析
算法·动态规划
zzcufo10 分钟前
多邻国第五阶段第13部分
java·开发语言·数据库
37方寸18 分钟前
前端基础知识(JavaScript)
开发语言·前端·javascript
不染尘.19 分钟前
双指针算法
算法
2501_9011478323 分钟前
题解:有效的正方形
算法·面试·职场和发展·求职招聘
你撅嘴真丑23 分钟前
习题与总结
算法
Whisper_Sy38 分钟前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 应用列表实现
android·开发语言·javascript·flutter·php
小CC吃豆子44 分钟前
Python爬虫
开发语言·python