题解 | #丑数#
丑数
http://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b
首先丑数都是只有质因子235,刚开始没明白这个题目,后来想到所有的数都可以拆成质数之积(毕竟质数的定义就是只有1和自身是因数,也就是不能再拆,想要拆到最后只有235,那形成的时候也应该只有235),那想要235就要由这三个数不停的互相累乘就可以了
class Solution { public: int GetUglyNumber_Solution(int index) { if(index <= 0)return 0; int p2=0,p3=0,p5=0;//初始化三个指向三个潜在成为最小丑数的位置 vector<int> result(index,0); result[0] = 1;// for(int i=1; i < index; i++){ result[i] = min(result[p2]*2,min(result[p3]*3, result[p5]*5)); if(result[i] == result[p2]*2)p2++;//为了防止重复需要三个if都能够走到 if(result[i] == result[p3]*3)p3++;//为了防止重复需要三个if都能够走到 if(result[i] == result[p5]*5)p5++;//为了防止重复需要三个if都能够走到 } return result[index-1]; } };