剑指offer求丑数
2018-08-15 15:28
45 查看
题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
思路:
看到此题第一反应不是常态的求一个数是不是丑数,并且要将数从那个小到大排列,想到 用数组按顺序存放,也可以用容器vector,,(只是了解过,不能应用熟练,不误导大家)
况且,可以看出这些数是前面一个数乘以2,3,或5得到,取其中最小的,放入丑数数组
代码如下 :
[code]#include<iostream> using namespace std; class Solution { public: int GetUglyNumber_Solution(int index) { if (index <= 0) { return 0; } int *ugly = new int[index + 1]; *ugly = 1; int p2 = 0; int p3 = 0; int p5 = 0; for (int i = 1; i < index; ++i) { int min_ugly = min(ugly[p2] * 2, ugly[p3] * 3, ugly[p5] * 5); ugly[i] = min_ugly; if (p2 <= i && ugly[p2] * 2 <= min_ugly) p2++; if (p3 <= i && ugly[p3] * 3 <= min_ugly) p3++; if (p5 <= i && ugly[p5] * 5 <= min_ugly) p5++; } int result = ugly[index - 1]; delete[]ugly; return result; } int min(int a, int b, int c) { int t= (a<b?a:b); return (t<c?t:c); } }; int main() { Solution so; int num; cin>> num; cout<< so.GetUglyNumber_Solution(num) << endl; cin >> num; return 0; }
阅读更多
相关文章推荐
- 剑指offer 面试题34 丑数
- 【剑指offer】面试题34-丑数
- 剑指offer 丑数
- 剑指 offer代码解析——面试题34丑数
- 剑指offer-丑数
- [剑指offer]丑数
- 剑指offer——丑数
- 剑指offer题解 丑数
- 剑指offer-丑数
- 剑指offer34——丑数
- 【剑指offer 面试题34】丑数
- 剑指Offer面试题34题:丑数(Ugly Number)(while循环里面的三个小问题)
- 剑指offer 34. 丑数
- 剑指 offer代码解析——面试题34丑数
- 【剑指Offer学习】【面试题34:丑数】
- 剑指offer ——寻找丑数
- 剑指offer-面试题34-丑数
- 剑指offer——面试题34:丑数
- 《苦练算法》-剑指Offer- 三十三、丑数-python编写
- LintCode-剑指Offer-(4)丑数