剑指Offer——JZ33.丑数

题目传送门


在这里插入图片描述


题解

  • 自底向上的思维方式,用乘法去升序得到每一个丑数

AC-Code

class Solution {
public:
    int GetUglyNumber_Solution(int index) {
        if(index <= 0)    return 0;
        vector<int> ans(index);
        int p2 = 0, p3 = 0, p5 = 0;
        ans[0] = 1;
        for(int i = 1; i < index; ++i) {
            ans[i] = min(ans[p2] * 2, min(ans[p3] * 3, ans[p5] * 5));
            if(ans[i] == ans[p2] * 2) ++p2;
            if(ans[i] == ans[p3] * 3) ++p3;
            if(ans[i] == ans[p5] * 5) ++p5;
        }
        return ans[index - 1];
    }
};

你可能感兴趣的:(剑指Offer)