我们需要在原序列中挑选出一个长度为k
的子序列,要求该子序列包含1, 2, ..., k
,且每个数字只出现一次。字典序最小意味着我们在每一步选择时,要尽可能选择一个较小的数字。
为了解决这个问题,我们可以使用栈(Stack)来辅助选择数字。栈结构的特点是后进先出(LIFO),可以帮助我们在遍历过程中保持字典序最小。
现在有一个长度为n的数字序列,每个数都在1~k的范围内,且1~k内每个数字都至少出现过一次。现在我们想在这里面找一个子序列,使得1~k恰好出现一次,且字典序最小。请你通过程序得出结果。
我们认为: