leetcode -- Super Ugly Number -- 跟ugly number系列一起复习
来源:互联网 发布:光棍 知乎 编辑:程序博客网 时间:2024/04/30 06:43
https://leetcode.com/problems/super-ugly-number/
https://leetcode.com/problems/ugly-number-ii/
思路1 TLE
像ugly number II 的思路, 过不了大case, TLE.因为每次都要生成一个minlist,但其实每次这个minlist只更新了一个值而已。所以我们维护一个min heap是最好的。用heapq
class Solution(object): def nthSuperUglyNumber(self, n, primes): """ :type n: int :type primes: List[int] :rtype: int """ length = len(primes) idx = [0] * length ans = [1] while len(ans) < n: minlist = [primes[i]*ans[idx[i]] for i in xrange(len(idx))] umin = min(minlist) min_idx = minlist.index(umin) idx[min_idx] += 1 if umin != ans[-1]: ans.append(umin) #print (minlist, min_idx, ans) return ans[-1]
思路1改进,用heapq
import heapqclass Solution(object): def nthSuperUglyNumber(self, n, primes): """ :type n: int :type primes: List[int] :rtype: int """ length = len(primes) idx = [0] * length ans = [1] minlist = [(primes[i]*ans[idx[i]], i) for i in xrange(len(idx))] #[(val, idx),(),...],这里把val和idx算作tuple算进去。 heapq.heapify(minlist) while len(ans) < n: (umin, min_idx) = heapq.heappop(minlist) idx[min_idx] += 1 if umin != ans[-1]: ans.append(umin) heapq.heappush(minlist, (primes[min_idx]*ans[idx[min_idx]], min_idx)) return ans[-1]
要看http://blog.csdn.net/xyqzki/article/details/50516439, 关于heapq运用。
Ugly Number
http://blog.csdn.net/xyqzki/article/details/50121225
Ugly Number II
http://blog.csdn.net/xyqzki/article/details/50127749
这里的思路就是给定一个质数集合,不断的生成下一个最小的质数
参考
http://bookshadow.com/weblog/2015/12/03/leetcode-super-ugly-number/
http://zhangxi-lam.github.io/2015/12/04/4_%E6%AF%8F%E6%97%A5%E4%B8%80%E5%88%B7-Super-Ugly-Number/
0 0
- leetcode -- Super Ugly Number -- 跟ugly number系列一起复习
- LeetCode:Super Ugly Number系列
- leetcode Super Ugly Number
- Super Ugly Number | LeetCode
- leetcode Super Ugly Number
- leetcode Super Ugly Number
- Leetcode Super Ugly Number
- LeetCode Super Ugly Number
- leetcode - Super Ugly Number
- 【Leetcode】Super Ugly Number
- leetcode Super Ugly Number
- LeetCode Super Ugly Number
- LeetCode: Super Ugly Number
- Super Ugly Number -- leetcode
- leetcode---Super Ugly Number
- leetcode - Ugly Number、Ugly Number II 、Super Ugly Number
- leetcode - ugly number, ugly number2, super ugly number
- leetcode 313 : Super Ugly Number
- oss图片处理实例
- scope的使用场景和说明
- 6.1 实现strpbrk的功能
- css3--学习记录二(选择器)
- TableViewCell重用机制避免重复显示问题
- leetcode -- Super Ugly Number -- 跟ugly number系列一起复习
- 开放android的root权限
- 【笔记】Linux shell脚本编程
- 手动内存管理(MRC)转ARC
- Leetcode Gray Code
- 【jQuery】使用$.extend()扩展工具函数
- Unity3d使用MeshCollider检测区域
- 虚拟机centos配置网络
- iOS开发 如何使用Leak检查内存泄漏