計算第N個醜數 Ugly Number

2021-10-08 18:24:20 字數 678 閱讀 7412

題目描述

包含質因子2、3和5的數稱作醜數。

例如6、8都是醜數,但14不是,因為它包含質因子7。

習慣上我們把1當做是第乙個醜數。

按從小到大的順序求第n個醜數

題目分析:

質因子包含2、3、5三個中任意乙個或者多個;而且題目明確給出1為最小的醜數;因此可以從1開始,對後面的數依次乘以2、3、5.

比如乙個陣列,最開始只有乙個元素1,建立三個索引p2、p3、p5,分別記錄乘2、乘3、乘5的位置,然後將1分別乘以2、3、5,取其中最小的乙個數,作為醜數填入陣列中,依次迴圈,直至取到第n個數。

這三個索引是關鍵,開始的時候都指向陣列0位置,即p2=p3=p5=0,每次取到的最小的數後確認是與2、3、5中哪個數字相乘得到,與2相乘得到就p2++,與3相乘得到p3++,與5相乘得到,p5++。

**如下:

#include

#include

#include

using

namespace std;

class

solution

intgetuglynumber_solution

(int index)

return rest[index -1]

;}};

intmain()

計算第N個醜數

牛客網上劍指offer上的題目 把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。解法1 算是一種很暴力的方法,從第乙個醜數開始一次遞加,直到滿足n的要求,但是很不幸,超時...

返回第n個醜數

把只包含質因子2 3和5的數稱作醜數 ugly number 例如 2,3,4,5,6,8,9,10,12,15,等,習慣上我們把1當做是第乙個醜數。寫乙個高效演算法,返回第n個醜數。解法1 判斷某個數是否為醜數,連續找到第n個醜數 include using namespace std bool ...

找到第N個醜數

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。找到第n個醜數 方法1 存放num之前所有元素是否是醜數的flag int getuglynumber solution in...