算法1:

1.将n转化为字符串s。

2.从左到右遍历字符串s,对于每一个字符,如果它比它右边的字符小,则删除它,直到删除k个字符为止。

3.将剩下的字符拼接起来,得到新的字符串t。

4.将字符串t转化为整数输出。

时间复杂度:O(m)

算法2:

1.将n转化为字符串s。

2.使用一个栈stack,从左到右遍历字符串s,对于每一个字符,如果栈顶元素比它小且删除该元素不会使得栈的大小小于k,则弹出栈顶元素,直到栈为空或者栈顶元素比它大,或者弹出k个元素为止。将该元素压入栈中。

3.如果遍历完字符串s后栈中元素的数量大于m-k,则继续弹出栈顶元素直到栈的大小为m-k。

4.将栈中元素从栈底到栈顶组成一个新的字符串t。

5.将字符串t转化为整数输出。

时间复杂度:O(m)

请编写一个程序实现一下功能。给定一个十进制正整数n每个数位上数字均不为0n 的位数是m。现在从m位中删除k位0km求生成的新整数最大为多少。

原文地址: https://www.cveoy.top/t/topic/b8u2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录