剑指 Offer 49. 丑数

题目描述

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

示例:

输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。

说明:

1 是丑数。
n 不超过1690。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/chou-shu-lcof

代码实现

class Solution {
public:
    int nthUglyNumber(int n) {
        vector<int> uglyNum;
        int a_ind = 0;
        int b_ind = 0;
        int c_ind = 0;
        uglyNum.push_back(1);
        for(int i = 1; i < n; i++) {
            int tmp = min(uglyNum[a_ind] * 2, uglyNum[b_ind] * 3, uglyNum[c_ind] * 5);
            if(tmp == uglyNum[a_ind] * 2)   a_ind++;
            if(tmp == uglyNum[b_ind] * 3)   b_ind++;
            if(tmp == uglyNum[c_ind] * 5)   c_ind++;
            uglyNum.push_back(tmp);
        }
        return uglyNum[n - 1];
    }
    int min(int a, int b, int c) {
        int min_ab = (a > b) ? b : a;
        return (min_ab > c) ? c : min_ab;
    }
};
原文地址:https://www.cnblogs.com/xqmeng/p/13631143.html