【算法题】丑数

该博客主要讨论了如何找出第N个丑数的问题,即只包含质因子2、3和5的数。作者通过分析指出,丑数可以表示为2、3和5的指数形式,并提出了通过改变指数来顺序找到下一个丑数的方法。

题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

分析
丑数可以分解成2a3b5c的形式,则可改变指数a,b,c的值,依次找到下一个丑数。

代码

public class Solution {
    public int GetUglyNumber_Solution(int index) {
        if(index<7) return index;
        int[] num = new int[index];
        num[0]=1;
        int k2=0,k3=0,k5=0;
        for(int i=1;i<index;i++){
            num[i]= Math.min(2*num[k2],Math.min(3*num[k3],5*num[k5]));
            if(num[i]==2*num[k2]) k2++;
            if(num[i]==3*num[k3]) k3++;
            if(num[i]==5*num[k5]) k5++;
        }
        return num[--index];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值