题目
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
思路
代码
class Solution {
public:
int GetUglyNumber_Solution(int index) {
vector<int> dp(index+1, 0);
dp[1] = 1;
int idx2 = 1, idx3 = 1, idx5 = 1;
for ( int i = 2; i <= index; ++i ) {
dp[i] = min3( 2*dp[idx2], 3*dp[idx3], 5*dp[idx5] );
if ( dp[i] == 2*dp[idx2] ) ++idx2;
if ( dp[i] == 3*dp[idx3] ) ++idx3;
if ( dp[i] == 5*dp[idx5] ) ++idx5;
}
return dp[index];
}
int min3( int a, int b, int c ) {
return min( min( a, b ), c );
}
};