保留最大的数

Posted bernieloveslife

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保留最大的数相关的知识,希望对你有一定的参考价值。

题目描述
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:

输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。

输出描述:

输出保留下来的结果。

示例1
输入

325 1

输出

35

Solution1:(TLE)

number = input()
cnt = int(input())
if cnt==len(number):
    print(‘0‘)
else:
    while cnt>0:
        flag = False
        cnt -= 1
        for i in range(len(number)-1):
            if int(number[i])<int(number[i+1]):
                number = number[:i] + number[i+1:]
                flag = True
                break
        if not flag:
            number = number[:len(number)-1]
    print(number)

Solution2:

number = list(input())
cnt = int(input())
if cnt==len(number):
    print(‘0‘)
else:
    i = 0
    l = len(number)
    while cnt>0 and i<l-1:
        if number[i]>=number[i+1]:
            i += 1
            continue
        number.pop(i)
        cnt -= 1
        l -= 1
        i = i-1 if i>0 else 0
    while cnt>0:
        cnt -= 1
        number.pop()
    print(‘‘.join(number))

只需要扫描一遍,删除数字之和回退一位就可以了,减少了时间复杂度。




以上是关于保留最大的数的主要内容,如果未能解决你的问题,请参考以下文章

保留最大的数

保留最大的数

C++从5个数中取最大数及最小数怎么编程(保留6位小数)

java BottomBarNavigation代码保留片段状态

如何将片段中的 ListView 对象的数据传递给 Activity?

60291253去掉三个数字最小的数是?