只包含因子2/3/5的數稱為醜數。
方法1:逐個判斷每個整數是不是醜數
方法2:建立陣列儲存已經找到的醜數,用空間換時間的方法
每乙個醜數都是前面的醜數乘以2、3、5得到的
已有醜數中最大醜數為m,下乙個醜數應該是已知醜數分別乘以2、3、5的第乙個大於m的數,記錄,每個乘以2、3、5第乙個大於m的位置更新。
#includeusing namespace std;
bool isugly(int num)
int getuglynumber1(int n)
{ if(n<=0)
return 0;
int uglynum=0;
int num=0;
while(uglynum
劍指Offer 34 醜數
把只包含因子2 3和5的數稱為醜數,求從小到大的順序的第1500個數。1是第乙個醜數。乙個醜數可以表示成2m3 n5 k2 m3 n5 k 2m3n5k 其中,m n k為自然數zzz。醜數從小到大的順序其實是m n k這三個數中的其中乙個數加一。生成過程 陣列res初始化,儲存了第乙個元素res ...
劍指offer 34 醜數
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。看到這個問題的時候可以這樣想 解題思路 因為乙個醜數隻包含質因子2 3和5,也就是說乙個醜數一定由另乙個醜數乘以2或者乘以...
《劍指offer》 34 醜數的判斷與查詢
題目 我們把只包含因子2,3,5的數稱為醜數 ugly number 求按從小到大的順序的第1500個醜數。例如6,8都是醜數,但14不是,因為它包含因子7.習慣上我們把1當作第乙個醜數。方案一 所謂乙個數m是n的因子的意思是n能被m整除。那麼根據醜數的定義,醜數只能被2,3,5整除,如果乙個數能被...