訊息稱 iQOO Neo6 將於 4 月上旬釋出:旗艦遊戲體驗下放,驍龍 8 + E4 直屏 + 雙壓感 + 稀土散熱
阿新 • • 發佈:2022-03-17
劍指 Offer 17. 列印從1到最大的n位數
題目
連結
https://leetcode-cn.com/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/
問題描述
輸入數字 n,按順序打印出從 1 到最大的 n 位十進位制數。比如輸入 3,則打印出 1、2、3 一直到最大的 3 位數 999。
用返回一個整數列表來代替列印
n 為正整數
示例
輸入: n = 1
輸出: [1,2,3,4,5,6,7,8,9]
提示
用返回一個整數列表來代替列印
n 為正整數
思路
用大數的思想做的,控制回溯。
複雜度分析
時間複雜度 O(10^n) 空間複雜度 O(n)
程式碼
Java
public int[] printNumbers(int n) { ans = new int[(int) Math.pow(10, n) - 1]; for (int i = 1; i <= n; i++) { build(i, new StringBuilder()); } return ans; } public void build(int n, StringBuilder numString) { if (n == 0) { int tmp = Integer.valueOf(numString.toString()); ans[tag++] = tmp; return; } for (int i = 0; i < 10; i++) { if (i == 0 && numString.length() == 0) { continue; } numString.append(i); build(n - 1, numString); numString.delete(numString.length() - 1, numString.length()); } }