Ugly Number II(求第N个丑数)
来源:互联网 发布:齐鲁商品手机行情软件 编辑:程序博客网 时间:2024/06/04 17:56
这个应该是微软的一道面试题,首先需要明白丑数的概念。1是一个特殊的丑数,其次只含有2,3,5质因数的数被定义为丑数。
关于解题的思路可以参考:
http://www.geeksforgeeks.org/ugly-numbers/
1到N的丑数为 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, … ;
可以分成如下三组:
(1) 1×2, 2×2, 3×2, 4×2, 5×2, …(2) 1×3, 2×3, 3×3, 4×3, 5×3, …(3) 1×5, 2×5, 3×5, 4×5, 5×5, …
只需要保证每次迭代的过程中选取最小的丑数(或者说是质因数),可以理解为后面的数字是前面的数组针对2,3,5的乘积。
C++可以AC的代码如下:
//求三个数的最小值 int min(int a, int b, int c){ int minNum = a > b ? b : a; return minNum > c ? c : minNum; } //求第N个丑数 int nthUglyNumber(int n) { int *ugly = new int[n]; memset(ugly, 0, sizeof(int) * n); ugly[0] = 1; int factor2 = 2, factor3 = 3, factor5 = 5; int index2, index3, index5; index2 = index3 = index5 = 0; for(int i=1; i<n; i++){ int minNum = min(factor2, factor3, factor5); ugly[i] = minNum; if(factor2 == minNum) factor2 = 2 * ugly[++index2]; if(factor3 == minNum) factor3 = 3 * ugly[++index3]; if(factor5 == minNum) factor5 = 5 * ugly[++index5]; } return ugly[n-1]; }
0 0
- Ugly Number II(求第N个丑数)
- Ugly Number II(求第N个丑数)
- Ugly Number II 寻找第N个丑数
- 264.leetcode Ugly Number II(medium)[寻找第N个丑数]
- Ugly Number Ugly Number II
- 找出第n个ugly number
- LeetCode 264. Ugly Number II(dp,O(n)求丑数)
- LightOJ 1245 - Harmonic Number (II) (求n/1+n/2+n/2+....+n/n)
- 39.Ugly Number II(动态规划)
- leetcode:数学:Ugly Number II(264)
- Leetcode 264 - Ugly Number II(dp)
- 1.ugly number (I,II,super)
- Leetcode -- Ugly Number II
- LeetCode: Ugly Number II
- [leetcode] Ugly Number II
- 264 Ugly Number II
- Leetcode: Ugly Number II
- [LeetCode] Ugly Number II
- 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法
- Redis常用的命令(一)-------启动、配置等
- 滚动数组
- Android init为什么看不出部分打印
- 在浏览器中输入一个网址,解析其背后发生的故事
- Ugly Number II(求第N个丑数)
- 小P寻宝记——好基友一起走
- POJ做过的题目分类小总结(持续更新中...)
- pthread_cond_signal与pthread_cond_wait详解
- 用二进制文件处理学生成绩
- 上班总结
- 国内旅游 一些价格昂贵值得一游的旅游景区
- POJ 1094 Sorting It All Out(拓扑排序·判断+实现)
- 我知道的运营那点事