找到醜數 劍指offer

2021-10-05 01:37:58 字數 746 閱讀 6518

題目描述

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

題目分析

一開始我以為醜數是它的因子只能為2,3和5,再看了一遍題目,醜數是它的質數因子只能為2,3和5,意味著可以包含非質數的因子。

解題思路

醜數都是由醜數*醜數得來的,如

2 ∗

\ast

∗ 13 ∗

\ast

∗ 15 ∗

\ast

∗ 12 ∗

\ast

∗ 23 ∗

\ast

∗ 15 ∗

\ast

∗ 1……第乙個醜數是1,那麼可以將這個已知的醜數,分別乘以2,3和5,可以得到新的醜數。新的醜數*2,3和5又可以得到新的醜數,如此類推……於是,可以用動態規劃去解答這一題,建立乙個陣列去記錄醜數數列。

時間複雜度

o(n)

**

public class solution 

return arr[index - 1];

}}

劍指offer 醜數

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。分析 參考程式設計師面試金典 偽 如下 1 初始化array和佇列 q2 q3 q5 2 將1插入array 3 分別將1 2...

劍指Offer 醜數

我們把只包含因子 2 3 和 5 的數稱作醜數 ugly number 求按從小 到大的順序的第 1500 個醜數。例如 6 8都是醜數,但 14 不是,它包含因子 7。習慣上我們把 1當做第乙個醜數。解法一 逐一判斷是否是醜數,簡單但是不夠高效 數字n是數字m的因子說明m n 0。醜數的因子只有2...

劍指offer 醜數

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。分析 為了保證時間達到要求,可以將所求得的醜數都儲存在陣列中,然後再取出。前面的醜數乘以2 3或5中的最小的乙個是下乙個醜數。...