讨论/技术交流/丑数2的理解/

class Solution {
public:
int nthUglyNumber(int n) {
vector<int> dp(n);
dp.at(0)=1;
int p_2,p_3,p_5;
p_2=p_3=p_5=0;
for (int i=1;i<n;++i)
{
dp.at(i)=min(min(2dp.at(p_2),3dp.at(p_3)),5dp.at(p_5));
if (dp.at(i)==2
dp.at(p_2))//因为每个数据都必须乘以1、3、5所以,p_2,p_3,p_5实际表示当前那一个位置的自己需要乘以相应的数,判断是否相等就代表乘没有乘。
++p_2;
if (dp.at(i)==3dp.at(p_3))
++p_3;
if (dp.at(i)==5
dp.at(p_5))
++p_5;
}
return dp.at(n-1);
}
};

共 0 个回复
暂无回复