leetcode 264 Ugly Number II
https://leetcode.com/problems/ugly-number-ii/discuss/591634/C%2B%2B-easy-O(n)-DP
一个丑数乘以2/3/5仍然是一个丑数;t2、t3、t5记录当前应该乘以2、3、5的数字的位置,选择乘积最小的一个。
class Solution { public: int nthUglyNumber(int n) { vector<int> vec(n,1); int t2=0,t3=0,t5=0; for(int i=1;i<n;++i) { int tmp=min(vec[t2]*2,min(vec[t3]*3,vec[t5]*5)); vec[i]=tmp; if(tmp==vec[t2]*2) ++t2; if(tmp==vec[t3]*3) ++t3; if(tmp==vec[t5]*5) ++t5; } return vec[n-1]; } };