醜數(簡單)
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];
}
}