LeetCode 字典序排數

2022-06-24 08:36:11 字數 653 閱讀 8593

q:給定乙個整數 n, 返回從 1 到 n 的字典順序。

例如,給定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。

請盡可能的優化演算法的時間複雜度和空間複雜度。 輸入的資料 n 小於等於 5,000,000。

a:1.第一想法是用map,map的key是轉換成的string,value按順序放置

public listlexicalorder(int n) 

string s1 = s.tostring();

if (map.containskey(s1)) else

}for (arraylistcurr : map.values())

return res;

}

後來我也考慮用每個值的頭做key,但這樣做順序是錯的。字典序中,順序是1,10,100,11,但如果用頭做key,順序是1,10,11,……,19,100

但這個方法,肉眼可見,記憶體消耗極大。

2.遞迴解法,實則是十叉樹前序遍歷

public listlexicalorder(int n) 

private void dfs(int k, int n, listres)

}}

字典序排數 dfs

給定乙個整數 n,返回從 1 到 n 的字典順序。例如,給定 n 1 3,返回 1,10,11,12,13,2,3,4,5,6,7,8,9 請盡可能的優化演算法的時間複雜度和空間複雜度。輸入的資料 n 小於等於 5,000,000。dfs,確定好開頭,每一次把當前的開頭走完。1 class solu...

leetcode 386 字典序排數 C語言

給定乙個整數 n,返回從 1 到 n 的字典順序。例如,給定 n 1 3,返回 1,10,11,12,13,2,3,4,5,6,7,8,9 請盡可能的優化演算法的時間複雜度和空間複雜度。輸入的資料 n 小於等於 5,000,000。note the returned array must be ma...

字典序排數 與dfs遍歷N叉樹

題目如下 給定乙個整數 n,返回從 1 到 n 的字典順序。例如,給定 n 1 3,返回 1,10,11,12,13,2,3,4,5,6,7,8,9 請盡可能的優化演算法的時間複雜度和空間複雜度。輸入的資料 n 小於等於 5,000,000。首先觀察數字的排列規則,會發現這是乙個n叉樹的前序遍歷.子...