看解析不如看代码,比如有三个聚宝盆,每个聚宝盆里有一个种子,而第一个盆里的东西能变两倍,第二个盆里的变3倍,第三个变5倍,然后你拿个麻袋,你麻袋一开始还是有一块钱,每个盆能倒出来的东西用m2,m3,m5表示,每次找出m2,m3,m5中最小的,给它种子加一,不然亏啊,然后你麻袋里装的就是一堆堆的钱;
这代码是牛客网白嫖的;
import java.util.ArrayList;
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index<=0){return 0;}
if (index==1) return 1;
int i2=0,i3=0,i5=0;
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
while(list.size()<index){
int m2 = list.get(i2)*2;
int m3 = list.get(i3)*3;
int m5 = list.get(i5)*5;
int min = Math.min(m2,Math.min(m3,m5));
list.add(min);
if(min == m2)i2++;
if(min == m3)i3++;
if(min == m5)i5++;
}
return list.get(list.size()-1);
}
}