题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
这里就是设置一个位置1出的初始值为1 其他的值有*2 *3 *5 比较之后改变最小的那个 坐标也++ 记住一定是3个if
因为这几个会有相等的情况 此时都得++
public class Solution {
public int GetUglyNumber_Solution(int N) {
if(N <= 6)
return N;
int i2 = 1, i3 = 1, i5 = 1;
int[] dp = new int[N + 1];
dp[1] = 1;
for(int i = 2; i <= N; i++){
int next2 = dp[i2] * 2, next3 = dp[i3] * 3, next5 = dp[i5] * 5;
dp[i] = Math.min(next2, Math.min(next3, next5));
if(dp[i] == next2)
i2++;
if(dp[i] == next3)
i3++;
if(dp[i] == next5)
i5++;
}
return dp[N];
}
}