题解 | #丑数#

丑数

http://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b

public class Solution {
    public int GetUglyNumber_Solution(int index) {
        //若小于7,全是丑数,直接返回对应的数
        if(index<7) return index;
        int[] num = new int[index];
        //第一个丑数是1
        num[0] = 1;
        int i=0,m=0,n=0;
        for(int j=1;j<index;j++){
            //丑数可以用1为基础,乘以2,3,5来得到下一个丑数,
            //比如2*2=4,2*3=6,从中选出最小的,就是下一个丑数.然后下标加一,
            num[j] = Math.min(num[i]*2, Math.min(num[m]*3,num[n]*5));
            if(num[j] == num[i]*2) i++;
            if(num[j] == num[m]*3) m++;
            if(num[j] == num[n]*5) n++;
        }
        //返回最后一个数
        return num[index-1];
    }
}
全部评论

相关推荐

11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
与火:这不接? 留子的钱不挣白不挣
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务