理解題意關鍵
如果說乙個數的因子只有 2 3 5 , 那麼反過來想,這個數一定是由若干個 2 3 5 相乘得到的,所以每一次只需要找出當前所有已知醜數中由2 3 5 相乘可以得到的最小的數即可。
也就是說每乙個醜數,都可以由之前的醜數乘 2/3/5 得到。
具體做法
設定三個指標,初始他們都指向第乙個醜數(1),每一次由 2 3 5 分別與它們指標指向的位置的元素相乘,取出最小的那乙個作為下乙個醜數。
我們把只包含質因子 2、3 和 5 的數稱作醜數(ugly number)。求按從小到大的順序的第 n 個醜數。
示例
輸入: n = 10說明1.1是醜數輸出: 12
解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個醜數。
2.n不超過1690
//在三個數中取最小值上,以及對不同指標運算出相同最小值的去重上都處理的相當精妙
class solution
return dp[n];}};
只包含因子2 3 5的數
k的因子中只包含2 3 5。滿足條件的前10個數是 2,3,4,5,6,8,9,10,12,15。所有這樣的k組成了乙個序列s,現在給出乙個數n,求s中 給定數的最小的數。例如 n 13,s中 13的最小的數是15,所以輸出15。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t ...
1010 只包含因子2 3 5的數
k的因子中只包含2 3 5。滿足條件的前10個數是 2,3,4,5,6,8,9,10,12,15。所有這樣的k組成了乙個序列s,現在給出乙個數n,求s中 給定數的最小的數。例如 n 13,s中 13的最小的數是15,所以輸出15。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t ...
power oj 只包含因子2 3 5的數
k的因子中只包含2 3 5。滿足條件的前10個數是 2,3,4,5,6,8,9,10,12,15。所有這樣的k組成了乙個序列s,現在給出乙個數n,求s中 給定數的最小的數。例如 n 13,s中 13的最小的數是15,所以輸出15。input 第1行 乙個數t,表示後面用作輸入測試的數的數量。1 t ...