題目描述
把只包含因子2酝惧、3和5的數(shù)稱作丑數(shù)(Ugly Number)。例如6伯诬、8都是丑數(shù)晚唇,但14不是,因?yàn)樗蜃?盗似。 習(xí)慣上我們把1當(dāng)做是第一個(gè)丑數(shù)哩陕。求按從小到大的順序的第N個(gè)丑數(shù)。
import java.util.ArrayList;
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index<=0){
return 0;
}else if(index==1){
return 1;
}
int p2=0;
int p3=0;
int p5=0;
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
for(int m=2; m<=index; m++){
int i = 2*list.get(p2);
int j = 3*list.get(p3);
int k = 5*list.get(p5);
if(i==minNum(i,j,k)){
p2++;
list.add(i);
}
if(j==minNum(i,j,k)){
p3++;
//如果之前已經(jīng)添加過,則不再重復(fù)添加
if(list.size()!=m){
list.add(j);
}
}
if(k==minNum(i,j,k)){
p5++;
//如果之前已經(jīng)添加過悍及,則不再重復(fù)添加
if(list.size()!=m){
list.add(k);
}
}
}
return list.get(index-1);
}
public int minNum(int i, int j, int k){
int tmp = minNum(i,j);
return minNum(tmp,k);
}
public int minNum(int i, int j){
if(i<=j){
return i;
}else{
return j;
}
}
}