丑数(简单)
2020年6月10日
题目来源:力扣
解题
- 暴力
丑数=2xX3yX5Z,除以这些数,是丑数的最后肯定为1
class Solution {
public boolean isUgly(int num) {
if(num<=0)
return false;
while(num%2==0 || num%3==0 || num%5==0){
if(num%2==0) num/=2;
if(num%3==0) num/=3;
if(num%5==0) num/=5;
}
return num==1;
}
}
丑数Ⅱ(中等)
2020年6月10日
题目来源:力扣
解题
- 动态规划
有数组本身的i指针,有i2指针代表乘2、i3指针代表乘3、i5指针代表乘5
一开始所有的指针都指向num[0]
对i2、i3、i5进行对应的乘操作,看看哪个数最小,毫无疑问是2最小,那么i2指针向后一位
继续比较,这次是i3最小,i3向后一位
由此递推
class Solution {
public int nthUglyNumber(int n) {
int[] num=new int[1691];
int i2=0,i3=0,i5=0;
int ugly;
num[0]=1;
for(int i=1;i<n;i++){
ugly=Math.min(Math.min(num[i2]*2,num[i3]*3),num[i5]*5);
num[i]=ugly;
if(ugly==num[i2]*2) ++i2;
if(ugly==num[i3]*3) ++i3;
if(ugly==num[i5]*5) ++i5;
}
return num[n-1];
}
}