LeetCode264. Ugly Number II
来源:互联网 发布:淘宝账户管理在哪里找 编辑:程序博客网 时间:2024/06/04 23:20
题目链接:
https://leetcode.com/problems/ugly-number-ii/
题目描述:
找出第n个丑数。
丑数:1是一个特殊的丑数,其次只含有2,3,5质因数的数被定义为丑数。
题目分析:
诶,自己做没做出来。
http://www.geeksforgeeks.org/ugly-numbers/
可以参考这个很详细哒。
根据动态规划的思想,当前的丑数肯定是由之前某个丑数乘2或乘3或乘4得到。这样就能得到一个生成链,麻烦的是这个生产链得是有序的。用三个指针idx2,idx3,idx4来保证有序。
且我们要保证每次迭代选择的都是最小的丑数。
factor2表示2*之前的某个丑数,idx2表示之前那个丑数的下标。当factor2被更新了,那么idx2指针也要前进一位。
代码:
class Solution {public: int minAmongThree(int a,int b,int c){ int minNum=a<b?a:b; return minNum<c?minNum:c; } int nthUglyNumber(int n) { vector<int> uglyNums(n,0); uglyNums[0]=1; int idx2,idx3,idx5; idx2=idx3=idx5=0; int factor2=1,factor3=1,factor5=1; for(int i=0;i<n;i++){ uglyNums[i]=minAmongThree(factor2,factor3,factor5); if(factor2==uglyNums[i]){ factor2=2*uglyNums[idx2++]; } if(factor3==uglyNums[i]){ factor3=3*uglyNums[idx3++]; } if(factor5==uglyNums[i]){ factor5=5*uglyNums[idx5++]; } } return uglyNums[n-1]; }};
0 0
- LeetCode264. Ugly Number II
- leetcode264. Ugly Number II
- leetcode264-Ugly Number II
- leetcode264.[DP][math][leep] Ugly Number II
- Ugly Number Ugly Number II
- Leetcode -- Ugly Number II
- LeetCode: Ugly Number II
- [leetcode] Ugly Number II
- 264 Ugly Number II
- Leetcode: Ugly Number II
- [LeetCode] Ugly Number II
- Ugly Number II
- LeetCode Ugly Number II
- Ugly Number I II
- [leetcode] Ugly Number II
- [LeetCode] Ugly Number II
- LeetCode ||Ugly Number II
- Ugly Number II
- Android之广播二(静态注册实现开机启动)
- Codeforces 617D Polyline 【枚举】
- 信号量与锁的差别
- [Leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal@python
- 用 Python 和 OpenCV 检测和跟踪运动对象
- LeetCode264. Ugly Number II
- linux用户管理笔记
- QLPreviewItem
- C++ list 使用方法
- IOS高级控件(一)
- centos6.5修改硬盘分区
- 安卓蓝牙入门二-------整合版本
- 编写扩展性更好的程序——里氏替换原则
- POJ 1064 (二分)