在线机考|2024华为实习&秋招&春招编程题(最新)——第1题_最强大脑游戏_100分(九)

题目内容

某最强大脑游戏要求:选手在一个整数序列中(整数取值为[1, 10]),自行去掉K个整数,得到一个新的整数序列,-使得整数序列左到右拼接起来后,得到的整数值最大。那么假设你是优秀的选手,在给定这个整数序列之后,你能够得到的最大整数值是多少?

输入描述

输入分为三行:

第一行为一个整数N,表示整数序列有N个元素,其取值范围[1,100000]

第二行为N个整数,空格分割,其整数取值范围[1,10]

第三行为一个整数K,表示去掉K个整数,其整数范围[1,N)

输出描述

输出一个最大的整数值

样例

输入:

4
3 6 9 4
2
输出:

94

解题思路

为了得到保留整数拼接后的最大值,我们需要确保高位的数字尽可能大。为此,可以采用以下策略:

  1. 优先保留值为10的元素:由于10在拼接时相对于1-9的数字更具优势,优先保留它们可以增加最终拼接数的值。
  2. 使用贪心算法结合栈:遍历整数序列,使用一个栈来存储保留的整数;当当前数字比栈顶数字更大,并且还可以移除数字时,移除栈顶数字以便当前更大的数字能够占据更高的位数;特别处理值为10的元素,确保它们被优先保留。
  3. 处理剩余的移除次数