剑指offer:丑数
2017-04-18 15:49
148 查看
题目描述
把只包含素因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。class Solution {
public:
//思路:后面的丑数等于前面的丑数乘2或3或5
int GetUglyNumber_Solution(int index) {
if(index == 0)
return 0;
if(index == 1)
return 1;
vector<long long> uglynum;
uglynum.push_back(1);
int iternum=1;
int t2=0, t3=0, t5=0;
while(iternum < index)
{
long long ugly2 = uglynum[t2] * 2;
long long ugly3 = uglynum[t3] * 3;
long long ugly5 = uglynum[t5] * 5;
long long min = minofthree(ugly2, ugly3, ugly5);
uglynum.push_back(min);
while(uglynum[t2] * 2 <= uglynum[uglynum.size()-1])
t2++;
while(uglynum[t3] * 3 <= uglynum[uglynum.size()-1])
t3++;
while(uglynum[t5] * 5 <= uglynum[uglynum.size()-1])
t5++;
++iternum;
}
return uglynum[index-1];
}
long long minofthree(long long a, long long b, long long c)
{
int t = (a > b) ? b:a;
int r = (t > c) ? c:t;
return r;
}
};
相关文章推荐
- 剑指offer 34 丑数
- 剑指Offer面试题34:丑数 Java实现
- 剑指Offer之面试题34:丑数
- 剑指offer 编程题(32):第N个丑数
- 【剑指Offer】丑数
- 【剑指offer】丑数
- 【剑指Offer学习】【面试题34:丑数】
- 剑指offer之面试题34丑数
- 剑指offer面试题目:丑数
- 剑指Offer----面试题34:丑数
- 【剑指offer】丑数
- 【剑指offer】q34:丑数
- 剑指offer—丑数
- 剑指offer(二十八)之丑数
- 剑指offer 34---丑数
- 剑指offer----丑数
- 剑指offer——丑数
- 剑指offer——33.丑数
- 剑指Offer---寻找第N个丑数
- 剑指offer-丑数