劍指Offer 17 列印從1到最大的n位數

2022-06-25 18:42:12 字數 547 閱讀 9984

輸入數字 n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1、2、3 一直到最大的 3 位數 999。要注意大數問題,即輸出字串。

輸入:n = 1

輸出:[1,2,3,4,5,6,7,8,9]

class solution 

return res;

}private:

string res, loop = "0123456789";

void dfs(string& ans, int digit, int pos)

for (char ch : loop)

}};

本題因為要注意大數問題。這個大數包括現有的資料型別都無法儲存的數,所以要通過生成字串解決。本題可以看做每位數字從0到9的全排列,首位為特殊情況,不能為0,所以我們將首位的生成拿到dfs函式外,而dfs函式用於生成除首位外的其他數字。

劍指offer17 列印從1到最大的n位數

題目 輸入數字n,按順序列印從1到最大的n為十進位制數。比如輸入3,則列印出1,2,3一直到最大的3位數999。看到這個問題之後,最容易想到的辦法就是先求出最大的n位數,然後用乙個迴圈從1開始逐個列印。於是很容易寫出以下 void print1tomaxofndigits 1 int n for i...

劍指 Offer 17 列印從1到最大的n位數

題目 輸入乙個位數n,把1到最大的n位數 如當n 2時,為99 放到int裡返回。public int printnumbers int n 思路 1.直接用for來放入,不考慮大數問題。不考慮大數問題 public int printnumbers int n return array 2.當n變...

劍指 Offer 17 列印從1到最大的n位數

輸入數字n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1 2 3 一直到最大的 3 位數 999。示例 1 輸入 n 1 輸出 1,2,3,4,5,6,7,8,9 越來越覺得越是簡單的問題,遇到大數的時候就越難想出來處理的方式,感覺像是一種思維上的定式限制了我會用別的方...