剑指offer题解

1-10题

11-20题

21-30题

31-40题

49.丑数

Medium
LeetCode

题:我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。

思路:
1.暴力解法:遍历所有自然数,每遍历到一个数就判断这个数是不是丑数,求出第n个丑数
2.利用丑数的性质,丑数只包含质因子 2、3 和 5,由此得知想要求得一个丑数可以通过一个丑数×2或者×3或者×5的方法求出来,那么这题就变成通过之前的丑数求之后的丑数的题了
设置三个指针,分别求指针指向的数(丑数)的2倍 3倍 5倍,三者比较得出最小的就是下一个丑数

public int nthUglyNumber(int n) {
        if(n < 0) return 0;
        int[] uglyArr = new int[n];
        uglyArr[0] = 1;
        int p2 = 0,p3 = 0,p5 = 0;
        for(int i=1;i<n;i++){
            int lastMaxUgly = uglyArr[i-1];
            while(lastMaxUgly >= uglyArr[p2]*2) p2++;
            while(lastMaxUgly >= uglyArr[p3]*3) p3++;
            while(lastMaxUgly >= uglyArr[p5]*5) p5++;
            uglyArr[i] = Math.min(Math.min(uglyArr[p2]*2,uglyArr[p3]*3),uglyArr[p5]*5);
        }
        return uglyArr[n-1];
    }

41-50题

Java开发工程师面试必知必会 文章被收录于专栏

这里包含Java工程师面试的必会知识

全部评论

相关推荐

“校招”、“3-5年经验”
xiaolihuam...:逆向工程不是搞外挂的吗,好像现在大学生坐牢最多的就是诈骗罪和非法侵入计算机系统罪,发美金,还居家办公,就是怕被一锅端,
点赞 评论 收藏
分享
深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务