本文主要是介绍264 Ugly Number II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
除第一个数 1 外,所有的Ugly Number都是有较小的Ugly Number乘2,3,5得到的,
所以本题的关键就是在
1*2,2*2,3*2,4*2,5*2,6*2,8*2…
1*3,2*3,3*3,4*3,5*3,6*3,8*3…
1*5,2*5,3*5,4*5,5*5,6*5,8*5…
之中找到第n个数。
public static int nthUglyNumber(int n) {int []arr=new int[n];arr[0]=1;int i=0,j=0,k=0;int next=1;while(next<n){int min=Min(arr[i]*2,arr[j]*3,arr[k]*5);arr[next]=min;if(min==arr[i]*2)i++;if(min==arr[j]*3)j++;if(min==arr[k]*5)k++;next++;}return arr[n-1];}public static int Min(int a,int b,int c){int min=a;if(min>b)min=b;if(min>c)min=c;return min;}
这篇关于264 Ugly Number II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!