386. Lexicographical Numbers 輸出1到n之間按lexico排列的數字序列
阿新 • • 發佈:2018-08-02
圖片 添加 公式 and num ica 算法思想 異常 解法
[抄題]:
Given an integer n, return 1 - n in lexicographical order.
For example, given 13, return: [1,10,11,12,13,2,3,4,5,6,7,8,9].
Please optimize your algorithm to use less time and space. The input size may be as large as 5,000,000.
[暴力解法]:
時間分析:
空間分析:
[優化後]:
時間分析:
空間分析:
[奇葩輸出條件]:
[奇葩corner case]:
cur * 10 + i 進位時 >n就退出
[思維問題]:
不知道怎麽做dfs:多開幾個變量,用cur記錄當前可以進位的數,0-9,加i,也0-9.
[英文數據結構或算法,為什麽不用別的數據結構或算法]:
lexico舉例時,就是for 0-9就行了
[一句話思路]:
[輸入量]:空: 正常情況:特大:特小:程序裏處理到的特殊情況:異常情況(不合法不合理的輸入):
[畫圖]:
[一刷]:
- 可用於遞歸的數字記錄為cur, 從1開始
[二刷]:
- 同一個dfs中的n和i是不變的。i變化時return換i, cur變化時return換cur。(在誰的主場return就換誰)
[三刷]:
- dfs寫得不熟悉啊:先添加,再進行下一步擴展,而且dfs中要寫傳遞的公式
[四刷]:
[五刷]:
[五分鐘肉眼debug的結果]:
[總結]:
[復雜度]:Time complexity: O() Space complexity: O()
[算法思想:叠代/遞歸/分治/貪心]:
[關鍵模板化代碼]:
[其他解法]:
[Follow Up]:
[LC給出的題目變變變]:
[代碼風格] :
[是否頭一次寫此類driver funcion的代碼] :
[潛臺詞] :
386. Lexicographical Numbers 輸出1到n之間按lexico排列的數字序列