LintCode 4:Ugly Number II
2017-09-05 15:02
489 查看
Description:
Ugly number is a number that only have factors 2, 3 and 5.
Design an algorithm to find the nth ugly number. The first 10 ugly numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
Note:
1.根据剑指offer中的思想,用一个数组来记录所有得到的丑数,用T2来存储最大的乘以2以后的数组下标,T3、T5以此类推。这样更新下一个丑数,只用比较ugly[T2]*2,ugly[T3]*3,ugly[T5]*5这三个数就可以。注意:当发生新产生的丑数与前一个相等情况时,丑数不更新,对应的T要更新。
2.由于新开了动态空间,记得用完要析构。
Code:
class Solution {
public:
/*
* @param n: An integer
* @return: the nth prime number as description.
*/
int nthUglyNumber(int n) {
// write your code here
int* ugly = new int
;
ugly[0] = 1;
int T2 = 0;
int T3 = 0;
int T5 = 0;
int i = 1;
while (i < n) {
// cout << i-1 << " " << ugly[i-1] << endl;
if (ugly[T2] * 2 <= ugly[T3] * 3 && ugly[T2] * 2 <= ugly[T5] * 5) {
if (ugly[i - 1] != ugly[T2] * 2) {
ugly[i] = ugly[T2] * 2;
i++;
}
T2++;
}
else if (ugly[T3] * 3 <= ugly[T2] * 2 && ugly[T3] * 3 <= ugly[T5] * 5) {
if (ugly[i - 1] != ugly[T3] * 3) {
ugly[i] = ugly[T3] * 3;
i++;
}
T3++;
}
else if (ugly[T5] * 5 <= ugly[T3] * 3 && ugly[T5] * 5 <= ugly[T2] * 2) {
if (ugly[i - 1] != ugly[T5] * 5) {
ugly[i] = ugly[T5] * 5;
i++;
}
T5++;
}
}
int result = ugly[n-1];
delete ugly;
return result;
}
};
Ugly number is a number that only have factors 2, 3 and 5.
Design an algorithm to find the nth ugly number. The first 10 ugly numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12
Note:
1.根据剑指offer中的思想,用一个数组来记录所有得到的丑数,用T2来存储最大的乘以2以后的数组下标,T3、T5以此类推。这样更新下一个丑数,只用比较ugly[T2]*2,ugly[T3]*3,ugly[T5]*5这三个数就可以。注意:当发生新产生的丑数与前一个相等情况时,丑数不更新,对应的T要更新。
2.由于新开了动态空间,记得用完要析构。
Code:
class Solution {
public:
/*
* @param n: An integer
* @return: the nth prime number as description.
*/
int nthUglyNumber(int n) {
// write your code here
int* ugly = new int
;
ugly[0] = 1;
int T2 = 0;
int T3 = 0;
int T5 = 0;
int i = 1;
while (i < n) {
// cout << i-1 << " " << ugly[i-1] << endl;
if (ugly[T2] * 2 <= ugly[T3] * 3 && ugly[T2] * 2 <= ugly[T5] * 5) {
if (ugly[i - 1] != ugly[T2] * 2) {
ugly[i] = ugly[T2] * 2;
i++;
}
T2++;
}
else if (ugly[T3] * 3 <= ugly[T2] * 2 && ugly[T3] * 3 <= ugly[T5] * 5) {
if (ugly[i - 1] != ugly[T3] * 3) {
ugly[i] = ugly[T3] * 3;
i++;
}
T3++;
}
else if (ugly[T5] * 5 <= ugly[T3] * 3 && ugly[T5] * 5 <= ugly[T2] * 2) {
if (ugly[i - 1] != ugly[T5] * 5) {
ugly[i] = ugly[T5] * 5;
i++;
}
T5++;
}
}
int result = ugly[n-1];
delete ugly;
return result;
}
};
相关文章推荐
- **[Lintcode]Ugly Number II 丑数 II
- lintcode-medium-Ugly Number II
- 264. Ugly Number II
- [leetcode] Ugly Number II
- LeetCode.263(264) UglyNumber&UglyNumber II
- Ugly Number II
- Ugly Number II
- 264. Ugly Number II
- LeetCode--Ugly Number II
- LeetCode_DP_Ugly Number II
- LeetCode[264] Ugly Number II
- Ugly Number II
- leetcode UglyNumberII
- [Leetcode] #263#264 Ugly Number I & II
- (LeetCode 264) Ugly Number II
- 264.Ugly Number II
- leetcode264 Ugly Number II
- Ugly Number II
- Ugly Number,Ugly Number II,Super Ugly Number
- leetCode 264. Ugly Number II