zoukankan      html  css  js  c++  java
  • 剑指offer 丑数

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

    思路分析:

    1.由题目可知,丑数由2,3,5构成,丑数的格式为2^x * 3^y * 5^z,那么丑数也就是由另外一个丑数乘以2,3,5得来的.

    2.1为初始的丑数,乘以2,3,5后,2,3,5都为丑数,对应的2,3,5也乘以2,3,5后,也会得到9个丑数

    3.那么我们可以创建一个丑数数组,同时维护三个队列,分别为乘2,3,5的三种,每次都从三个队列中取出最小的丑数,加入丑数数组,把当前加入丑数弹出三个队列。

    代码如下:

    class Solution {
    public:
        int GetUglyNumber_Solution(int index) {
           if(index<7)
           {
               return index;
           }
            vector<int> arr;
            int p2=0,p3=0,p5=0,number=1;
            arr.push_back(number);
            while(arr.size()<index)
            {
                number=min(arr[p2]*2,min(arr[p3]*3,arr[p5]*5));
                if(arr[p2]*2==number) p2++;
                if(arr[p3]*3==number) p3++;
                if(arr[p5]*5==number) p5++;
                arr.push_back(number);
            }
            return number;
        
        }
    };
    
  • 相关阅读:
    后端写前端用什么框架
    什么是互联网
    数据的意义
    LR特征维数特别大实时计算问题
    一次线上服务线程数飙到8000
    jsoup 解析html
    做研究的方式
    推荐系统架构文章
    如何识别广告评论
    运营和做事方式
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779961.html
Copyright © 2011-2022 走看看