​题目传送门​


剑指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];
}
};