题解 | #丑数#

丑数

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

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

方法一 :数学 枚举

丑数是只包含质因子2、3和5的数,可以从小到大枚举满足条件的数

先将满足条件的最小的数加入数组存储

直到第N个数。

图解:
图片说明

复杂度分析

时间复杂度:O(N),N为第N个数,遍历枚举;

空间复杂度:O(N),存储与读取数据。

代码:

class Solution {
public:
    int GetUglyNumber_Solution(int index) {
        if(index==0)return 0;
        int x2=0,x3=0,x5=0;//丑数的因子只有2,3,5
        vector<int>res;
        res.push_back(1);
        for(int i=1;i<index;i++){
            res.push_back(min(res[x2]*2,min(res[x3]*3, res[x5]*5)));//将满足条件的最小丑数加入
            if(res[i]==res[x2]*2)x2++;//若满足条件则增加系数
            if(res[i]==res[x3]*3)x3++;
            if(res[i]==res[x5]*5)x5++;
        }
        return res[index-1];//返回第k个数
    }
};
全部评论

相关推荐

05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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