1.第k个数(丑数)
剑指offer里有此题,但是其认为1为第一个丑数。
牛客网上此题认为1不为丑数,但是如果要正确计算的话,那么必须设置第一个丑数为1,那么求第k个数就转化为求第k+1个数
class KthNumber { public: int findKth(int k) { // write code here if(k<=0) return 0; else if(1==k) return 3; else if(2==k) return 5; else if(3==k) return 7; else if(k>100) return 0; int index=1,min,res; int *num=new int[k+1]; num[0]=1; int *multi3=num,*multi5=num,*multi7=num; while(index<k+1){ min=minval(*multi3*3,*multi5*5,*multi7*7); num[index]=min; while(*multi3*3<=min) ++multi3; while(*multi5*5<=min) ++multi5; while(*multi7*7<=min) ++multi7; ++index; } res=num[index-1]; delete[] num; num=NULL; return res; } private: int minval(const int& num1,const int& num2,const int& num3){ int min=num1<num2?num1:num2; return min<num3?min:num3; } };