栈--找最小数

题目描述

给一个正整数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))
相关推荐
倦王几秒前
力扣日刷26112
算法·leetcode·职场和发展
无风听海10 分钟前
深入讲解 C# 中 string 如何支持 CultureInfo
开发语言·c#
yaoxin52112311 分钟前
291. Java Stream API - 从正则表达式创建 Stream
java·开发语言
liu****11 分钟前
能源之星案例
人工智能·python·算法·机器学习·能源
BHXDML15 分钟前
Java 设计模式详解
java·开发语言·设计模式
程序员三藏15 分钟前
软件测试环境搭建及测试过程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
CCPC不拿奖不改名19 分钟前
数据处理与分析:pandas基础+面试习题
开发语言·数据结构·python·面试·职场和发展·pandas
2501_9011478321 分钟前
环形房屋打家劫舍算法
考研·算法·leetcode·高考
余瑜鱼鱼鱼22 分钟前
Java数据结构:从入门到精通(十三)
java·开发语言