Ugly Number II问题及解法
2017-10-26 15:20
183 查看
问题描述:
Write a program to find the
Ugly numbers are positive numbers whose prime factors only include
Note that
not exceed 1690.
问题分析:
本题分析与Super Ugly Number一样,这里就不多说了,详戳http://blog.csdn.net/u011809767/article/details/78351462
过程详见代码:
class Solution {
public:
int nthUglyNumber(int n) {
vector<int> dp(n, INT_MAX), p{2,3,5},idx(3,0);
dp[0] = 1;
for (int i = 1; i < n; i++)
{
for (int j = 0; j < 3; j++)
{
dp[i] = min(dp[i], dp[idx[j]] * p[j]);
}
for (int j = 0; j < 3; j++)
{
while (dp[idx[j]] * p[j] <= dp[i]) idx[j]++;
}
}
return dp[n - 1];
}
};
Write a program to find the
n-th ugly number.
Ugly numbers are positive numbers whose prime factors only include
2, 3, 5. For example,
1, 2, 3, 4, 5, 6, 8, 9, 10, 12is the sequence of the first
10ugly numbers.
Note that
1is typically treated as an ugly number, and n does
not exceed 1690.
问题分析:
本题分析与Super Ugly Number一样,这里就不多说了,详戳http://blog.csdn.net/u011809767/article/details/78351462
过程详见代码:
class Solution {
public:
int nthUglyNumber(int n) {
vector<int> dp(n, INT_MAX), p{2,3,5},idx(3,0);
dp[0] = 1;
for (int i = 1; i < n; i++)
{
for (int j = 0; j < 3; j++)
{
dp[i] = min(dp[i], dp[idx[j]] * p[j]);
}
for (int j = 0; j < 3; j++)
{
while (dp[idx[j]] * p[j] <= dp[i]) idx[j]++;
}
}
return dp[n - 1];
}
};
相关文章推荐
- Ugly Number问题及解法
- [理解leetcode解法]264. Ugly Number II
- DP问题:leetcode(264) Ugly Number II
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- Guess Number Higher or Lower II问题及解法
- LeetCode Single Number I & II 都符合两个问题额外要求的 通用解法 与 思考过程
- Single Number II问题及解法
- Unique Paths II问题及解法
- LeetCode Ugly Number II
- Binary Number with Alternating Bits问题及解法
- Leetcode 263. Ugly Number & 264. Ugly Number II
- Ugly Number II
- 动态规划之极小化极大值问题 375. Guess Number Higher or Lower II
- LeetCode.263(264) UglyNumber&UglyNumber II
- Perfect Number问题及解法
- LeetCode-Ugly Number II-解题报告
- 【LeetCode】264. Ugly Number II
- [leetcode][dp] Ugly Number II
- 264、Ugly Number II