33求按从小到大的顺序的第N个丑数
Posted fankongkong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了33求按从小到大的顺序的第N个丑数相关的知识,希望对你有一定的参考价值。
一、题目
把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
二、解法
1 public class Solution { 2 public int GetUglyNumber_Solution(int index) { 3 if(index <= 0) 4 return 0; 5 if(index < 7) 6 return index; 7 int[] res = new int[index]; 8 res[0] = 1; 9 int t2 = 0,//记录乘以2的个数 10 t3 = 0,//记录乘以3的个数 11 t5 = 0,//记录乘以5的个数 12 i = 1; 13 for(; i < index; i++){ 14 res[i] = Math.min(res[t2]*2, Math.min(res[t3]*3, res[t5]*5)); 15 if(res[i] == res[t2]*2) t2++;//如果最小的等于res[t2]*2,那么t2加1 16 if(res[i] == res[t3]*3) t3++; 17 if(res[i] == res[t5]*5) t5++; 18 } 19 return res[index-1]; 20 } 21 }
以上是关于33求按从小到大的顺序的第N个丑数的主要内容,如果未能解决你的问题,请参考以下文章
把只包含质因子23和5的数称作丑数(Ugly Number)。例如68都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。