题解 | #丑数#
丑数
https://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b
使用三指针法,三指针分别指向2、3、5当前的另一个乘数,由于丑数的质因子只能是2、3、5,所以需要在遍历过程中记录所有的丑数,当作另一个乘数使用。
class Solution { public: int GetUglyNumber_Solution(int index) { if (index <= 1) return index; vector<int> tmp(1, 1); int i2 = 0, i3 = 0, i5 = 0, res, i = 2; while (i <= index) { res = min({2 * tmp[i2], 3 * tmp[i3], 5 * tmp[i5]}); if (res == 2 * tmp[i2]) i2++; if (res == 3 * tmp[i3]) i3++; if (res == 5 * tmp[i5]) i5++; tmp.push_back(res); i++; } return res; } };