劍指offer\c++
阿新 • • 發佈:2019-02-01
把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因為它包含因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。
int serchnum(vector<int>ivec,const int &num)
{
int length = ivec.size();
int max = ivec[length - 1];
for (int i = 0 ; i != length; i++)
{
if (ivec[i] * num > max)
return ivec[i]*num;
}
}
int findmin(int num1,int num2,int num3)
{
if (num1 < num2)
{
if (num1 < num3 )
return num1;
else
return num3;
}else
{
if (num2 <num3)
return num2;
else
return num3;
}
}
class Solution {
public:
int GetUglyNumber_Solution(int index) {
if (index == 0)
return 0;
vector<int> ivec ;
ivec.push_back(1);
for (int i = 1 ; i !=index;i++)
{
int num1 = serchnum(ivec,2);
int num2 = serchnum(ivec,3);
int num3 = serchnum(ivec,5);
int num = findmin(num1,num2,num3);
ivec.push_back(num);
}
return ivec[ivec.size()-1];
}
};