javascript醜數的解法

2021-08-30 04:17:57 字數 800 閱讀 7510

第一種:沒有看其他解法,自己寫的解法:

1.寫乙個無限迴圈,然後如果當前數是醜數,則count++;

2.如果count == n;則湊齊了n個醜數,返回

3.如果當前數不在醜數集合中(初始化為[1, 2, 3, 5]);

4.如果當前醜數大於6,則需要判斷,如果這個數的約數只有1和他本身,則這個數不是醜數

5.進行拆分,判斷這個數的約數是否為醜數,如果有不為醜數的輸入false,進入1,否則將這個數放到醜數集合中進行1

// 迭代判斷乙個數是否為醜數

const isuglynum = function(n, arr) else if (n > 6)

}if (sum == 2)

for (var i = 1; i < n; i++) }}

arr.push(n);

}return true;

}/**

* 判斷乙個是否為醜數

* @param n

*/const getnuglynum = function(n)

// 判讀i和i的約數是是否為醜數

if(isuglynum(i, arr))

}console.log(all);

}

第二種:標準解法,簡言之醜數解釋2, 3, 5的組合數,根據從小到大,組合這幾個數就可以了

var getuglynum = function (index) 

return uglynum[index - 1];

}

leetcode 264 醜數2的最小堆解法

編寫乙個程式,找出第 n 個醜數。醜數就是只包含質因數 2,3,5 的正整數。示例 輸入 n 10 輸出 12 解釋 1,2,3,4,5,6,8,9,10,12 是前 10 個醜數最小堆的方式思考方式,之前自己有點繞不過來,不知道該怎麼解。也不理解為什麼會用到堆,和為什麼會用到最小堆來解決問題。下面...

醜數的求解

題目 我們把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第1500個醜數。思路 如果能夠根據已經計算好的醜數,計算出下乙個醜數就可以避免這種情況,實現從醜數到醜數的高效演算法,根據定義...

醜數的求法

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