劍指offer 面試題34 醜數

2021-09-20 21:21:46 字數 583 閱讀 1891

劍指offer:面試題34——醜數

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

思路:給乙個陣列存放當前已有的醜數,這些醜數都是按順序存放的,每次計算新的醜數時,將計算出的最小的醜數放在已有陣列的nextugly位置上。

計算醜數的方法是遍歷已有的醜數,分別乘以2,乘以3乘以5,這三個數中選出當中最小的值並與nextugly位置的數比較,用三個指標分別記錄每次遍歷到的醜數陣列中乘以2、3、5後第乙個大於nextugly的值(當前大於nextugly的最小值),下一次比對時從該位置開始比對即可。

class solution 

public:

intgetuglynumber_solution

(int index)

int ugly = uglyarray[nextuglynum-1]

; delete [

] uglyarray;

return ugly;}}

;

劍指Offer 面試題34 醜數

我們把只包含因子2 3和5的數成為醜數,求按從小到大的順序的第1500個醜數。例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做第乙個醜數。分析 逐個判斷整數是不是醜數,直觀但是效率低下。根據醜數的定義,醜數只能被2 3和5整除,也就是說乙個數能被2整除,我們把它連續除以2 如果能...

劍指offer面試題 34 醜數

題目描述 把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。思路分析 思路一 逐個判斷每個整數是不是醜數的解法,直觀但不高效 牛客網測試超時 所謂乙個數m是另乙個數n的因子,是...

劍指offer 面試題34 醜數

題目 把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。思路 需要注意的是,下乙個醜數可能是其中兩個或三個數衍生的,比如在生成6時,2衍生的是6,3在那個時候衍生的恰好也是6....