题目描述
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。
输出描述:
输出保留下来的结果。
示例1
输入
复制
325 1
输出
复制
35
解题思路:这个题真的有点坑,对时间复杂度的要求有点高,开始看的时候觉得还挺简单,然后一直卡思路,最后还是看了别人的解题思路,然后写完觉得测试用例没有错误的时候,又卡在超时的问题上,很久
最后看了 吉事有祥
的解题代码才A了这个题,真的容易:
首先遍历字符串时,将不满足x[i] >= x[x+1]的第i个数字删掉,如果没有达到要删除的数字个数,就从末尾进行删除。
超时代码:
x = list(input())
y = int(input())
i = 0
while i<(len(x)-1) and y>0:
if x[i] < x[i+1]:
x.pop(i)
y -= 1
i = 0
continue
i+=1
if y>0:
x = x[0:-y]
x = ''.join(x)
print(x)
最后通过的代码:
x = list(input())
y = int(input())
i = 0
while i<(len(x)-1) and y>0:
if x[i] < x[i+1]:
x.pop(i)
y -= 1
if i > 0:
i = i-1
else:
i = 0
else:
i+=1
if y>0:
x = x[0:-y]
x = ''.join(x)
print(x)
博客围绕给定十进制正整数,去掉部分数字使保留数字组成的正整数最大这一问题展开。作者分享解题时遇到时间复杂度要求高、思路卡顿、测试超时等问题,最后给出解题思路,即遍历字符串,删掉不满足x[i] >= x[x+1]的第i个数字,未达删除个数则从末尾删。
3242

被折叠的 条评论
为什么被折叠?



