本篇题解:删除重复数字后的最大数字
题目
一个长整型数字,消除重复的数字后,得到最大的一个数字。
如 12341 ,消除重复的 1,可得到 1234 或 2341,取最大值 2341。
42234,消除 4 得到 4223 或者 2234 ,再消除 2,得到 423 或 234,取最大值 423。
输入
输入一个数字,范围 [1,100000]
输出
输出经过删除操作后的最大值
示例一
输入
12341
输出
2341
示例二
输入
42234
输出
423
代码编写逻辑
下述代码的主要思路是将输入的数字字符串转化为数字列表,然后使用单调栈来找到最大的数。具体来说,首先使用计数排序统计每个数字出现的次数,然后遍历数字列表,对于每个数字,如果它比栈顶元素大,就将栈顶元素弹出,直到栈为空或者栈顶元素比当前数字大或者栈顶元素在后面不再出现。在这个过程中,需要使用一个 vis 数组来记录每个数字是否在栈中出现过,避免重复入栈。最后一步,将栈中的数字按照从高到低的顺序组合成一个新的数字,即为最大的数。
Python 代码展示
n = input(