//我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。
//
//
//
// 示例:
//
// 输入: n = 10
//输出: 12
//解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
//
// 说明:
//
//
// 1 是丑数。
// n 不超过1690。
//
//
// 注意:本题与主站 264 题相同:https://leetcode-cn.com/problems/ugly-number-ii/
// Related Topics 数学
// 👍 116 👎 0
/*
* 剑指 Offer 49 丑数
* 2021-02-18 11:43:06
* @author oxygenbytes
*/
#include "leetcode.h"
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public:
int nthUglyNumber(int n) {
vector<int> num(1, 1);
int i = 0, j = 0, k = 0;
while(--n){
int t = min(num[i] * 2, min(num[j] * 3, num[k] * 5));
num.push_back(t);
// cout<<i<<" "<<j<<" "<<k<<" "<<endl;
if(num[i] * 2 == t) i ++ ;
if(num[j] * 3 == t) j ++ ;
if(num[k] * 5 == t) k ++ ;
}
return num.back();
}
};
//leetcode submit region end(Prohibit modification and deletion)