0906 拼接出最小整數

2021-08-30 20:51:19 字數 545 閱讀 6797

題目描述:

設有n個正整數,將它們聯接成一排,組成乙個最小的多位整數。

程式輸入:n個數

程式輸出:聯接成的多位數

例如:n=2時,2個整數32,321連線成的最小整數為:32132,

n=4時,4個整數55,31,312, 33 聯接成的最小整數為:312313355

[題目要求]

1. 給出偽**即可,請給出對應的文字說明,並使用上面給出的例子試驗你的演算法。

2. 給出演算法的時間空間複雜度。

3. 證明你的演算法。(非常重要)

演算法思想:

1. 首先找出每個整數的唯一標識作為該整數的字首,組成乙個字首和整數值相對應的雜湊表

2. 對字首進行排序(直接插入排序): 從最高位開始比,如果對應位相同則比較下一位,如果某個字首已經比完最後一位了,那麼用最後一位和另一的數的下一位(以及再下一位)比較,直到比出大小,看哪個大就排在後面。

3. 輸出hash表中所有值,則找出了最小整數序列。

空間複雜度:o(n)

試題 I 整數拼接

試題 i 整數拼接 給定義個長度為 n 的陣列 a1,a2,an你可以從中選出兩個數 ai 和 aj i 不等於 j 然後將 ai 和 aj 一前一後拼成乙個新的整數。例如 12 和 345 可以拼成 12345 或 34512。注意交換 ai 和 aj 的順序總是被視為 2 種拼法,即便是 ai ...

試題 J 整數小拼接

給定義個長度為 n 的陣列 a1,a2,an。你可以從中選出兩個數 ai 和 aj i 不等於 j 然後將 ai 和 aj 一前一後拼成乙個新的整數。例如 12 和 345 可 以拼成 12345 或 34512 注意交換 ai 和 aj 的順序總是被視為 2 種拼法,即便 是 ai aj 時。樣例...

AcWing 2068 整數拼接

原題鏈結 考察 列舉 hash 思路 暴力是直接列舉a i 與a j 需要優化省去一重迴圈.我們列舉的a i a j 檢查是否為k倍數時,需要讓a j 10t a i t位為a i 的位數,注意這裡用字串轉換反而不如直接求位數方便 一重迴圈列舉a i 時,t已知,a i 已知,剩下的是快速找符合條件...