101:Ugly Number II
来源:互联网 发布:windows xp mobile 编辑:程序博客网 时间:2024/06/07 18:08
题目:Write a program to find the n-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
Note that 1 is typically treated as an ugly number, and n does not exceed 1690.
题目详情见https://leetcode.com/problems/ugly-number-ii/#/description
解析:我们可以维持三个序列,这三个序列分别是
1 * 2, 2 * 2, 3 * 2, 4 * 2, 5 2, 6 2, 8 *2, ….
1 * 3, 2 * 3, 3 * 3, 4 * 3, 5 3, 6 3, 8 *3, ….
1 * 5, 2 * 5, 3 * 5, 4 * 5, 5 5, 6 5, 8 *5, ….
其中1, 2, 3,4, 5, 6, 8 … 是丑陋数序列,每次从这三个序列中找到一个最小的数作为下一个丑陋数
代码如下:
// 时间复杂度 O(n),空间复杂度 O(n)class Solution {public: int nthUglyNumber(int n) { // un 表示存储 ugly number 的数组 vector<int> un(1, 1); // 1 是第一个丑陋数 int i2 = 1, i3 = 1, i5 = 1; while (un.size() < n) { int n2 = 2 * num[i2 - 1]; int n3 = 3 * num[i3 - 1]; int n5 = 5 * num[i5 - 1]; int tmp = min(n1, min(n3, n5)); if (tmp == n2) ++i2; else if (tmp == n3) ++i3; else ++i5; if (tmp != un.back()) un.push_back(tmp); } return un.back(); }};
0 0
- 101: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
- Leetcode: Ugly Number II
- leetcode:ugly Number II
- Ugly Number II
- c语言中的&的用法
- 2017-3-16 shellcode编写
- javascript挑战编程技能-第三题:计算矩形房间面积
- maven笔记(一)
- leetcode-53. Maximum Subarray
- 101:Ugly Number II
- UVA
- 实验吧ctf web题猫捉老鼠
- 用Java实现单向链表
- 浏览器兼容之旅的第五站:IE常见Bug——part3
- 手机移动端WEB资源整合
- LeetCode刷题【Array】 Find All Numbers Disappeared in an Array
- 跨域访问
- 如何在maven工程中加载oracle驱动