题解 | #丑数#

丑数

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

class Solution {
public:
    int GetUglyNumber_Solution(int index) {
        int a = 2, b = 3, c = 5;
        int a_n = 0, b_n = 0, c_n = 0;//统计第n个丑数包含对应的a、b、c个数
        vector<int> v_un(1, 1);
        while (v_un.size() < index) {
            a = v_un[a_n]*2;// 注意当前的丑数,可由之前的之前的数乘以基础因子得到
            b = v_un[b_n]*3;// 至于是之前哪个丑数,可通过x_n记录
            c = v_un[c_n]*5;
            int val = min(a, min(b, c));
            v_un.push_back(val);
            if(val == a) a_n++;// 记录当前丑数,含基础因子次数
            if(val == b) b_n++;
            if(val == c) c_n++;
        }
        return v_un[index-1];
    }
    // bool judge(int num)
    // {
    //     while (!num%2) num/=2;
    //     while (!num%3) num/=3;
    //     while (!num%5) num/=5;
    //     if(num == 1) return true;
    //     else return false; 
    // }

    // int GetUglyNumber_Solution(int index) {
    //     // write code here
    //     int val = 1;
    //     int count = 1;
    //     while (true) {
    //         if(count == index)
    //         {
    //             return val;
    //         }
    //         if(judge(val))
    //         {
    //             std::cout << val << " " << count << std::endl;
    //             count++;
    //         }
    //         val++;
    //     }
    //     return val;
    // }
};

挤挤刷刷! 文章被收录于专栏

记录coding过程

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务