思路:可以发现,每个丑数都是由以前的丑数得到。当前丑数一定是之前丑数能够得到的最小丑数。
AC代码
class Solution { public: int GetUglyNumber_Solution(int index) { if(index == 0) return 0; const int maxn = index + 5; int ans[maxn]; ans[0] = 1; int cur1 = 0, cur2 = 0, cur3 = 0; for(int i = 1; i < index; ++i) { ans[i] = min(ans[cur1]*2, min(ans[cur2]*3, ans[cur3]*5)); if(ans[cur1]*2 == ans[i]) ++cur1; if(ans[cur2]*3 == ans[i]) ++cur2; if(ans[cur3]*5 == ans[i]) ++cur3; } return ans[index-1]; } };
如有不当之处欢迎指出!