JZ33 丑数
作者:互联网
JZ33 丑数
题目描述
思路分析
三路归并。
和归并排序思想相同。
S
i
S_i
Si表示
i
i
i的倍数构成的区间,如
S
2
=
{
2
,
4
,
6
,
8...
}
S_2=\left\{ 2,4,6,8... \right\}
S2={2,4,6,8...}
S
=
{
1
}
∪
S
2
∪
S
3
∪
S
5
S=\left\{ 1 \right\} ∪S_2∪S_3∪S_5
S={1}∪S2∪S3∪S5
S
=
S
2
/
2
=
S
3
/
3
=
S
5
/
5
S=S_2/2=S_3/3=S_5/5
S=S2/2=S3/3=S5/5
代码实现
class Solution {
public:
int GetUglyNumber_Solution(int n) {
if(!n) return 0;
vector<int> a(1,1);
int i=0,j=0,k=0;
while(--n){
int t=min(a[i]*2,min(a[j]*3,a[k]*5));
a.push_back(t);
if(t==a[i]*2) i++;
if(t==a[j]*3) j++;
if(t==a[k]*5) k++;
}
return a.back();
}
};
标签:丑数,right,...,int,S2,JZ33,++ 来源: https://blog.csdn.net/qq_50757994/article/details/120613636