本文主要是介绍leetcode 264:丑数 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们需要做的是找到2乘某个数 或3乘某个数 或5乘某个数中的最小数刚好大于末尾的数字。t2,t3,t5分别表示乘以2 乘以3 乘以5
最小结果的下标,每次找三者之中的最小值,相应的t加一 如果有多个最小值,多个相应的t均加1
int nthUglyNumber(int n) {std::vector<int> a;if(n<7)return n;for(int i=0;i<6;i++)a.push_back(i+1);int t2=2;//表示最后乘以2的下标位置int t3=1;//表示最后乘以3的下标位置int t5=3;//表示最后乘以5的下标位置int c=6;int d=6;//表示末尾的数字while(c!=n){int a2=2*a[t2+1];int a3=3*a[t3+1];int a5=5*a[t5+2];int x=std::min(std::min(a2,a3),a5);if(x==a2){t2++;d=a2;}if(x==a3){t3++;d=a3; }if(x==a5){t5++;d=a5;}a.push_back(d);c++;}return d;
}
这篇关于leetcode 264:丑数 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!