問題:輸入數字n,按順序列印出從1到最大的n位十進位制數。
輸入:n
輸出:列印數字
思路1:
易錯思路:求出最大的n位十進位制數,然後for迴圈列印。
錯誤原因:最大的n位十進位制數有可能超出int型(或longlong型)。
利用陣列(或字串)來表達大數。**:
#include #include using namespace std;
bool increment(char* number)
} else
}return isoverflow;
}void printnumber(char* number)
for(int i=0;i<10;++i) }
void print1tomaxofndigits(int n)
delete number;
}
複雜度分析:時間複雜度 劍指offer 面試題17 列印從1到最大的n位數
輸入數字n,按順序列印出從1到最大的n位十進位制數,比如輸入3,則列印出1,2,3一直到最大的3位數即999 首先考慮n的範圍,當輸入n很大的時候,我們求最大的n位數用int或者long都會溢位。最常用也是最容易的方法是用字串或者陣列表達大數。我們用字串來解決大數問題。public void pri...
劍指offer面試題17 列印從1到最大的n位數
題目要求 輸入數字 n,按順序列印出從 1 到最大的 n 位十進位制數。比如輸入 3,則列印出 1 2 3 一直到最大的 3 位數 999 解題思路 1.首先暴力法遍歷可以求解,但是大整數問題需要另一種思路 2.構建乙個stringbuilder字串,輸入的n為多少,就賦多少個0。3.當該字串沒有發...
劍指offer 面試題17
題目 合併兩個排序的單向鍊錶 自己所寫 如下 listnode mergesortedlists listnode phead1,listnode phead2 listnode mergetwolist listnode pfirst,listnode psecond if phead pnext...