LintCode刷題之路(四) 醜數

2021-08-19 19:57:24 字數 991 閱讀 3086

設計乙個演算法,找出只含素因子2,3,5 的第 n 小的數。

符合條件的數如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12…

樣例 如果n = 9, 返回 10

挑戰 要求時間複雜度為o(nlogn)或者o(n)

思路:

根據醜數的定義可知,每乙個醜數都是由前面的醜數生成。例如:2是由1*2得來,3是由1 *3得來。

c++:

class solution 

else

}int nthuglynumber(int n)

if(ugly[i]/ugly[num_3]==3)

if(ugly[i]/ugly[num_5]==5)

}return ugly[n-1];

}};

py3:

class

solution:

""" @param n: an integer

@return: the nth prime number as description.

"""defnthuglynumber

(self, n):

# write your code here

ugly = [1]

num_2,num_3,num_5 = 0,0,0

for i in range(1,n):

min = min(min(ugly[num_2]*2,ugly[num_3]*3),ugly[num_5]*5)

if ugly[i]/ugly[num_2]==2:

num_2 += 1

if ugly[i]/ugly[num_3]==3:

num_3 +=1

if ugly[i]/ugly[num_5]==5:

num_5 += 1

return ugly[n-1]

LeetCode刷題 醜數

編寫乙個程式判斷給定的數是否為醜數。醜數就是只包含質因數 2,3,5 的正整數。示例 1 輸入 6 輸出 true 解釋 6 2 3 示例 2 輸入 8 輸出 true 解釋 8 2 2 2 示例 3 輸入 14 輸出 false 解釋 14 不是醜數,因為它包含了另外乙個質因數 7。說明 1 是醜...

LeetCode刷題 醜數

編寫乙個程式判斷給定的數是否為醜數。醜數就是只包含質因數 2,3,5 的正整數。示例 1 輸入 6 輸出 true 解釋 6 2 3 示例 2 輸入 8 輸出 true 解釋 8 2 2 2 示例 3 輸入 14 輸出 false 解釋 14 不是醜數,因為它包含了另外乙個質因數 7。說明 1 是醜...

刷題 醜數 python

題目 把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。思路 所有醜數可以通過前面的醜數乘2 3 5得到,主要是要知道如何將這些數從小到大排序,以確定排在第n個位置的醜數。...