題意:把只包含質因子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...