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叉樹的前序遍歷.子...