264 Ugly Number II 丑数 II

编写程序找第 n 个丑数。
丑数就是只包含质因子 2, 3, 5 的正整数。
例如, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 就是前10个丑数。
注意:
1. 1 一般也被当做丑数
2. n不超过1690

详见:https://leetcode.com/problems/ugly-number-ii/description/

Java实现:

class Solution {
    public int nthUglyNumber(int n) {
        if(n<=1){
            return n;
        }
        int[] res=new int[n];
        res[0]=1;
        int i2=0,i3=0,i5=0;
        for(int i=1;i<n;++i){
            res[i]=Math.min(res[i2]*2,Math.min(res[i3]*3,res[i5]*5));
            if(res[i]==res[i2]*2){
                ++i2;
            }
            if(res[i]==res[i3]*3){
                ++i3;
            }
            if(res[i]==res[i5]*5){
                ++i5;
            }
        }
        return res[n-1];
    }
}

C++实现:

class Solution {
public:
    int nthUglyNumber(int n) {
        if(n<=1)
        {
            return n;
        }
        vector<int> res(n);
        res[0]=1;
        int i2=0,i3=0,i5=0;
        for(int i=1;i<n;++i)
        {
            res[i]=min(min(res[i2]*2,res[i3]*3),res[i5]*5);
            if(res[i]==res[i2]*2)
            {
                ++i2;
            }
            if(res[i]==res[i3]*3)
            {
                ++i3;
            }
            if(res[i]==res[i5]*5)
            {
                ++i5;
            }
        }
        return res[n-1];
    }
};
原文地址:https://www.cnblogs.com/xidian2014/p/8761042.html