1. 程式人生 > >leetcodecl

leetcodecl

題目描述

把只包含質因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。

class Solution {
public:
    int minThree(int a, int b, int c)
{
	return a<b?min(a,c):min(b,c);
}
int GetUglyNumber_Solution(int index) {
	int pos=0,pos1=0,pos2=0;
	vector<int> ans;
	ans.push_back(1);

	while(ans.size()<index)
	{
		int flag = minThree(2*ans[pos],3*ans[pos1],5*ans[pos2]);
		ans.push_back(flag);
		if(flag == 2*ans[pos])
			pos++;
        if(flag==3*ans[pos1])
            pos1++;
        if(flag==5*ans[pos1])
            pos2++;
	}
	return ans[index-1];
}
};