终于把leetcode刷完了,编码能力还是不行,所以还是要做题,但是不想继续做一遍,所以选择了九度。
九度的编程环境和leetcode完全没有办法相提并论啊,不能立刻实时显示你那行做了,哪个输入你错了,显示错误界面也不是在同一个。
但没办法,有就不错,将就着吧。
剑指offer中已经看过书上是怎么解决这个问题的,但还是应该动手写一下。
思路都有了,但是不知道如何判断输入结束否,囧,这种问题上浪费了一些时间。
#include <iostream>
using namespace std;
int getUglyNumber(int n)
{
if(n<=0) return 0;
int *ugly=new int[n];
ugly[0]=1;
int idx2=0,idx3=0,idx5=0;
for(int i=1;i<n;++i)
{
int v2=ugly[idx2]*2;
int v3=ugly[idx3]*3;
int v5=ugly[idx5]*5;
ugly[i]=min(min(v2,v3),v5);
if(ugly[i]==v2)
{
++idx2;
}
if(ugly[i]==v3)
{
++idx3;
}
if(ugly[i]==v5)
{
++idx5;
}
}
return ugly[n-1];
}
int main()
{
int n;
while(cin>>n)
{
cout<<getUglyNumber(n)<<endl;
}
return 0;
}