https://blog.youkuaiyun.com/derrantcm/article/details/46753255
https://blog.youkuaiyun.com/hansionz/article/details/82722357
int minValue(int p1, int p2, int p3) {
int midMin = p1 > p2 ? p2 : p1;
return midMin > p3 ? p3 : midMin;
}
bool uglyK(int k, int result[]) {
if (0 >= k || NULL == result) {
return false;
}
int p2=0;
int p3=0;
int p5=0;
result[0] = 1;
int index = 1;
while (index <= k-1) {
int min = minValue(result[p2]*2,result[p3]*3,result[p5]*5);
// 最小的丑数被赋值
result[index] = min;
// 某个丑数乘了指定的2、3、5后相应片p2 p3 p5 指针往前走
if (result[p2] *2 <= min) {
p2++;
}
if (result[p3] *3 <= min) {
p3++;
}
if (result[p5] *5 <= min) {
p5++;
}
index++;
}
return true;
}
int ugly[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
uglyK(10,ugly);