面試題49 醜數

2021-08-24 18:01:28 字數 606 閱讀 4916

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

思路:暴力每個數,判斷是不是醜數,直到找到第n個醜數。(這個有點慢,不考慮)

不能暴力所有數,我們考慮暴力醜數。

假設陣列裡面的最大醜數為number;

肯定存在乙個t2,使得t2前面的所有醜數*2都小於number,t2後面的所有醜數*2都大於number。

同理t3,t5也存在;

那麼每次我們往陣列裡面,新增醜數的時候,更新t2,t3,t5;

如何新增這個醜數呢?

因為要按順序,那麼應該是最小的(t2*2,t3*3,t5*5)

**:

#include using namespace std;

class solution

int getuglynumber_solution(int index)

int ans = puglynumbers[nextuglyindex - 1];

return ans;

}};int main()

面試題49 醜數

一 暴力法 從1開始對每乙個數進行判斷,是否可以連除2,3,5得到1,效率比較低 class solution return number bool isugly int n 二 以空間換取時間的做法 思路 把每乙個醜數都列出來。醜數肯定是2,3,5的倍數,所以每乙個位置都可以乘2,3,5,找到比目...

面試題49 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。考察點 時間複雜度的理解 需求了解。思路 這道題最簡單的想法是寫乙個判斷是不是醜數的函式,然後從小到大以此遍歷,直到找到第...

面試題49 醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。解題思路 上 c 香 法一 暴力列舉法 超時 define maxn 10010 define maxnn 0xfffff...