劍指offer 33 醜數

2022-01-29 05:35:13 字數 700 閱讀 3177

題目描述

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

大家可以想一下,我們是如何寫出乙個醜數序列來的,序列最開始肯定有乙個1,接下來我們寫的時候是遍歷序列,依次乘以2,3,5,將不重複的數字插入到序列中,序列中有了新數,就接著遍歷相乘。

這個題的思路也是如此,不過是我們將乘以2,3,5的結果求乙個最小值出來,然後將其插入到序列當中。舉個例子,1分別乘以2,3,5得出的結果最小值為2,我們就把2插入到序列當中,因為這次是第0位乘的2,所以下一次計算最小值就要讓第1位乘以2。

依次計算,直到題目要求的位數,**如下:

function getuglynumber_solution(index)

let res = [1];

let p2 = 0;

let p3 = 0;

let p5 = 0;

for(let i=0; iif(_min==res[p3]*3)

if(_min==res[p5]*5)

res.push(_min)

}return res[index-1];

}

《劍指offer》33 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。c 實現 class solution return a index 1 python實現 coding utf 8 cl...

劍指offer 33 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。通俗易懂的解釋 首先從醜數的定義我們知道,乙個醜數的因子只有2,3,5,那麼醜數p 2 x 3 y 5 z,換句話說乙個醜...

劍指offer33 醜數

題目描述 把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。這裡講解的很詳細了。coding utf 8 class solution def getuglynumber ...