丑數(shù)

把只包含因子2,3和5的數(shù)稱作丑數(shù)(ugly number)。例如6,8都是丑數(shù),但14不是,因?yàn)樗艘蜃?。習(xí)慣上我們把1作為第一個(gè)丑數(shù)。求按從小到大的順序的第N個(gè)丑數(shù)。

int GetUglyNumber_Solution(int index) {

? ? if (index<0) return 0;

? ? ? ? if (index==1) return 1;

? ? ? ? vector<int>k(index);

? ? ? ? k[0]=1;

? ? ? ? int num2=0,num3=0,num5=0;

? ? ? ? for(int i=1;i<index;++i)

? ? ? ? ? ? {

? ? ? ? ? ? k[i]=min(k[num2]*2,min(k[num3]*3,k[num5]*5));

? ? ? ? ? ? if(k[i]==k[num2]*2) num2++;

? ? ? ? ? ? if(k[i]==k[num3]*3) num3++;

? ? ? ? ? ? if(k[i]==k[num5]*5) num5++;

? ? ? ? }

? ? ? ? return k[index-1];

? ? }

注解:建立一個(gè)大小為N的數(shù)組或容器,前十個(gè)丑數(shù)是1,2,3,4,5,6,8,9,10,12。先從1的2倍,3倍,5倍中選一個(gè)最小數(shù),作為第二個(gè)丑數(shù),然后從1的3倍,5倍,2的2倍中選擇最小的數(shù)作為第三個(gè)丑數(shù),然后從1的5倍,2的2倍,3的2倍中選一個(gè)最小的數(shù)作為下一個(gè)丑數(shù)......

每一個(gè)丑數(shù)都可以分解成一個(gè)或多個(gè)丑數(shù)的乘積。也可以看做之前已經(jīng)存好的丑數(shù)的2倍或3倍或5倍的數(shù)。怎么選取前面哪一個(gè)數(shù)的2倍,哪一個(gè)數(shù)的3倍,哪一個(gè)數(shù)的5倍是關(guān)鍵。

從最小的丑數(shù)開始,記錄他的2倍,3倍,5倍都是要取的,而且只能取一次,當(dāng)某個(gè)丑數(shù)的2倍取過之后,就更新改丑數(shù),更新為下一個(gè)比它大的丑數(shù);當(dāng)某個(gè)丑數(shù)的3倍取過之后,就更新丑數(shù)為下一個(gè)比他大的丑數(shù);當(dāng)某個(gè)丑數(shù)的5倍取過之后,就更新丑數(shù)為下一個(gè)比它大的丑數(shù)。更新之后,記錄的仍為丑數(shù)的相對應(yīng)的倍數(shù)。依次更新數(shù)組或容器,最后返回第N和元素即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,890評論 0 33
  • 題目 描述 設(shè)計(jì)一個(gè)算法,找出只含素因子2,3,5 的第 n 大的數(shù)。符合條件的數(shù)如:1, 2, 3, 4, 5,...
    悠揚(yáng)前奏閱讀 1,006評論 0 0
  • 此題說明了: 可以嘗試用空間換取時(shí)間 像丑數(shù)這種越來越稀疏的問題,越到后面越體現(xiàn)出算法優(yōu)化的重要性 《劍指offe...
    抬頭挺胸才算活著閱讀 348評論 0 0
  • 算法題:尋找丑數(shù) 這是一道在訂閱的blog上看到的題目,覺得比較有意思,就動手做了一下。 何為丑數(shù)? 丑數(shù)(Ugl...
    David栗子閱讀 719評論 0 0
  • 算法是本人的薄弱項(xiàng),今天開始,盡量抽出時(shí)間去學(xué)一些算法,然后進(jìn)行歸納總結(jié),將學(xué)習(xí)的過程記錄于簡書,希望對自己是一種...
    Goplayer王布斯閱讀 986評論 0 1

友情鏈接更多精彩內(nèi)容