演算法學習之醜數

2021-10-01 07:22:37 字數 552 閱讀 3867

題目:把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。

思路:比較直觀的就直接拿過來做除法就行了,但時間複雜度超級大,基本測試時就掛掉了。這裡使用另一種思路來解。

i=f(2、3、5)  :

i*1 =(2、3、5)

i*2=(4、6、10)

i*3=(6、9、15)

發現如果按i*n的形式排列結果會有重複值並且不會按序排列。這裡我們可以在用到時再去乘相應的2、3、5而不是每次都去做一遍2、、3、5乘以相同的i。所以我們這裡需要使用三個指標來分別控制2、3、5所處的倍數。

/**

* 醜數

** @param index

* @return

*/public int getuglynumber(int index)

return result[index-1];

}

演算法練習篇之 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。我們只求醜數,不要去管非醜數。每個醜數必然是由小於它的某個醜數乘以2,3或5得到的,這樣我們把求得的醜數都儲存下來,用之前...

演算法題 醜數

2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第1500個醜數。所謂乙個數m是另乙個數n的因子,是指n能被m整除,也就是n m 0。根據醜數的定義,醜數只能被2 3和5整除。也就是說如果乙個數如果...

刷演算法 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。首先從題目可以知道,對於乙個醜數p,p 2 p 3 p 5都是醜數。那麼從第乙個醜數1開始,1 2 1 3 1 5都是醜數...