leetcode 264 丑数2
2020-01-14 09:17
99 查看
丑数进阶版 !到底是第几个丑?
此题是在原来丑数的基础上
寻找第几个丑数
失败尝试想直接判断打表
1690内的所有丑数
果不其然 超时福利放送
一个个判断不行
那就需要寻找 数据规律 了
观察可得
丑数的基础上乘 2, 3, 5 仍然是丑数 – 简化判断
所以丑数可以由以下列表组成
2 | 1* 2 2 * 2 3 * 2 4 * 2 |
---|---|
3 | 1* 3 2 * 3 3 * 3 4 * 3 |
5 | 1* 2 2 * 2 3 * 2 4 * 2 |
做法:
- 维护三个list – ugly2, ugly3, ugly5
分别储存** now* 2, now* 3, now*5** - 取三个list 开头的 最小值 – 第 cnt 个丑数 (相当于是对丑数的排序过程)
- 直到 cnt 到达 n 为止 – 即取第n个丑数
代码如下:
class Solution { public: int nthUglyNumber(int n) { list<long long> ugly2; list<long long> ugly3; list<long long> ugly5; long long now = 1; int cnt = 1; while (cnt != n) { ugly2.push_back(now * 2); ugly3.push_back(now * 3); ugly5.push_back(now * 5); long long min2 = ugly2.front(); long long min3 = ugly3.front(); long long min5 = ugly5.front(); long long MIN = min(min2, min(min3, min5)); if (min2 == MIN) ugly2.pop_front(); if (min3 == MIN) ugly3.pop_front(); if (min5 == MIN) ugly5.pop_front(); now = MIN; cnt++; } return now; } };
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- leetcode264---丑数
- [LeetCode]264 丑数 II
- leetcode264_丑数2
- [Leetcode 264] Ugly Number II
- LeetCode 264. Ugly Number II
- LeetCode Ugly Number II(丑数的计算)
- [Leetcode] 丑数问题
- LeetCode 刷题: 丑数 ugly number 判断方法
- Leetcode 264. Ugly Number II
- leetcode 264 : Ugly Number II
- LeetCode 264 Ugly Number II (递推)
- leetCode 264. Ugly Number II
- [leetcode]264. Ugly Number II
- [LeetCode]70. Ugly Number II第N个丑数
- [理解leetcode解法]264. Ugly Number II
- Leetcode-264. Ugly Number II
- [LeetCode]263. Ugly Number&264. Ugly Number II
- LeetCode[264] Ugly Number II
- LeetCode 263. 丑数 python
- 264. Ugly Number II LeetCode