首页 > 试题广场 >

最大新整数

[编程题]最大新整数
  • 热度指数:2758 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
有一十进制正整数,移除其中的 K 个数,使剩下的数字是所有可能中最大的。
假设:
字符串的长度一定大于等于 K
字符串不会以 0 开头

输入描述:
一行由正整数组成的数字字符串,和一个正整数 K,两个数据用空格隔开,如:1432219 3。
字符串长度不超过2000,K<=2000。


输出描述:
移除 K 位后可能的最大的数字字符串。
如 1432219 移除 1, 2, 1 这 3 个数字后得到 4329,为所有可能中的最大值。
示例1

输入

1432219 3

输出

4329
头像 牛客题解官
发表于 2020-06-05 17:31:48
题解 题目难度:中等难度 知识点:单调栈 单调栈说明 定义: 单调栈就是栈内元素递增或者单调递减的栈,并且只能在栈顶操作。单调栈的维护是O(n) 的时间复杂度,所有元素只会进进栈一次 性质: 单调栈里面的元素具有单调性; 元素加入栈前会把栈顶破坏单调性的元素删除; 使用单调栈可以找到元素向左遍历的第 展开全文
头像 大芒果201903261055577
发表于 2021-02-02 23:49:30
牛客网XM26最大新整数 题目描述 有一十进制正整数,移除其中的 K 个数,使剩下的数字是所有可能中最大的。 假设: 字符串的长度一定大于等于 K 字符串不会以 0 开头 输入描述: 一行由正整数组成的数字字符串,和一个正整数 K,两个数据用空格隔开,如:143221 展开全文
头像 小蒲想变强
发表于 2021-10-04 16:50:31
删去K个字符,使字符串所表示的数最大 解法: 移除K个数,则从首字符向字符串尾部遍历K次,如果某个字符小于下一个字符的ASCII(数字字符串的大小和ASCII码一致),则将该字符移除(后续的字符依次前移),然后K值减1,退出此次循环,重新循环直到K为0;若字符串已经从前到后没有字符小于后一位,并且K 展开全文