【hihocoder】hihoパスワード


一、問題の説明
時間制限:
10000ms
単一点時限:
1000ms
メモリの制限:
256MB
説明
Hoさんは最近暗号学の授業で学んだ知識に基づいて、hihoパスワードを開発しました.このパスワードの鍵はこのように生成されました.N文字の言語に対して、長さMの単語を選択します.この単語を構成するすべてのアルファベットを順番に繰り返さないで書きます(つまり、同じアルファベットに出会ったときにスキップします).その後、アルファベットの残りの使用されていないアルファベットを順番に並べます.
5文字のhiho語について、単語1,2,2,4,3(ここで数字はアルファベットの順序を表す)を選択すると、鍵は1,2,4,3,5となる.
しかしある日、Hoさんは鍵を計算した後、最初に選んだ単語をなくしたことに気づき、あなたを見つけました.この鍵を生成できる最も短い単語を見つけてほしいと思っています.
入力
各入力ファイルには、単一のテストデータのセットが含まれています.
各試験データの第1の挙動は、前述のように正の整数Nである.
各試験データのセットの第2の動作N個の正の整数は、1つの鍵を記述するために使用され、第i個の正の整数Aiは、鍵の第i文字のアルファベット表における順序を表す.
100%のデータに対して、N<=1000、1<=Ai<=Nを満たす.
100%のデータに対して、任意の1<=i,j<=Nに対して、i≠jであればAi≠Ajを満たす.
しゅつりょく
各テストデータのセットについて、入力された鍵を生成できる最短の単語(空白列は単語とはみなさない)を出力する.アルファベットは与えられていないので、アルファベットごとにアルファベットの順序を出力すればよい(スペースで区切られている).
サンプル入力
5
1 2 4 3 5
サンプル出力
1 2 4

二、問題分析
元の文字列「1,2,2,4,3」と暗号列「1,2,4,3,5」をよく見てみると、文字列の後ろの部分には使われていない文字が辞書順に後ろに並んでいることが明らかになっていますが、暗号列が無秩序な位置にぶつかるのは後からでもいいのではないでしょうか.例えば上述したような所与の例では、無秩序な位置は「4」であるので、暗号化列をその位置まで巡回すればよい.
三、Java ACコード
import java.util.Scanner;

public class Main {
    
    public void getSecret(int[] nums, int n){
        if(nums==null || nums.length==0) return ;
        StringBuilder sb = new StringBuilder();
        int index = 0;
        for(int i=n-1;i>0;i--){
            if(nums[i]