丑数

题目描述

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

代码

class Solution {
public:

    int GetUglyNumber_Solution(int index) {
        int i2 = 0, i3 = 0, i5 = 0;
        vector<int> ugly(index, 0);
        ugly[0] = 1;
        int count = 1;

        while (count < index) {
            int ni2 = ugly[i2] * 2, ni3 = ugly[i3] * 3, ni5 = ugly[i5] * 5;
            ugly[count] = min(min(ni2, ni3), ni5);//下一个ugly取最小的数
            if (ugly[count] == ni2) {
                ++i2;
            }
            if (ugly[count] == ni3) {
                ++i3;
            }
            if (ugly[count] == ni5) {
                ++i5;
            }
            ++count;
        }
        return ugly[index - 1];
    }
};

posted on 2017-03-20 15:56  jec  阅读(219)  评论(0编辑  收藏  举报

导航