题目内容
某最强大脑游戏要求:选手在一个整数序列中(整数取值为[1, 10]),自行去掉K个整数,得到一个新的整数序列,-使得整数序列左到右拼接起来后,得到的整数值最大。那么假设你是优秀的选手,在给定这个整数序列之后,你能够得到的最大整数值是多少?
输入描述
输入分为三行:
第一行为一个整数N,表示整数序列有N个元素,其取值范围[1,100000]
第二行为N个整数,空格分割,其整数取值范围[1,10]
第三行为一个整数K,表示去掉K个整数,其整数范围[1,N)
输出描述
输出一个最大的整数值
样例
输入:
4
3 6 9 4
2
输出:94
解题思路
为了得到保留整数拼接后的最大值,我们需要确保高位的数字尽可能大。为此,可以采用以下策略:
- 优先保留值为10的元素:由于10在拼接时相对于1-9的数字更具优势,优先保留它们可以增加最终拼接数的值。
- 使用贪心算法结合栈:遍历整数序列,使用一个栈来存储保留的整数;当当前数字比栈顶数字更大,并且还可以移除数字时,移除栈顶数字以便当前更大的数字能够占据更高的位数;特别处理值为10的元素,确保它们被优先保留。
- 处理剩余的移除次数