LeetCode 264 Ugly Number II
2016-04-20 14:22
288 查看
Write a program to find the
Ugly numbers are positive numbers whose prime factors only include
Note that
Hint:
The naive approach is to call
every number until you reach the nth one. Most numbers are not ugly. Try to focus your effort on generating only the ugly ones.
An ugly number must be multiplied by either 2, 3, or 5 from a smaller ugly number.
The key is how to maintain the order of the ugly numbers. Try a similar approach of merging from three sorted lists: L1,
L2, and L3.
方法一,利用sortedset直接排序。由于set会内部排序,所以代码简单,但是效率不如下面的方法二。
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, 12is the sequence of the first
10ugly numbers.
Note that
1is typically treated as an ugly number.
Hint:
The naive approach is to call
isUglyfor
every number until you reach the nth one. Most numbers are not ugly. Try to focus your effort on generating only the ugly ones.
An ugly number must be multiplied by either 2, 3, or 5 from a smaller ugly number.
The key is how to maintain the order of the ugly numbers. Try a similar approach of merging from three sorted lists: L1,
L2, and L3.
方法一,利用sortedset直接排序。由于set会内部排序,所以代码简单,但是效率不如下面的方法二。
public static int nthUglyNumber(int n) { SortedSet<Long> set = new TreeSet<Long>(); long ithNum = 1; set.add(ithNum); for (int i = 0; i < n; i++) { ithNum = set.first(); set.add(ithNum * 2); set.add(ithNum * 3); set.add(ithNum * 5); set.remove(ithNum); } return (int) ithNum; }方法二:按照题目中的提示,维护一个丑数数组:
public static int nthUglyNumber2(int n) { int l1 = 0, l2 = 0, l3 = 0; int[] nums = new int ; nums[0] = 1; int i = 1; while (i < n) { int minNum = Math.min(Math.min(nums[l1] * 2, nums[l2] * 3), nums[l3] * 5); if (nums[l1] * 2 == minNum) l1++; if (nums[l2] * 3 == minNum) l2++; if (nums[l3] * 5 == minNum) l3++; nums[i++] = minNum; } return nums[n - 1]; }
相关文章推荐
- MediaRecorder start failed java.lang.RuntimeException: start failed
- 3、jquery中调用 easyui 组件的事件和方法
- linux中date -s 和虚拟机的时间
- 操作系统 实验二 作业调度
- tornado tcp编程
- [HDOJ5583]Kingdom of Black and White(暴力)
- 前端nginx时,让后端tomcat记录真实IP
- linux驱动中使用顺序锁
- 漫游Kafka设计篇之性能优化
- 全屏分页滚动插件
- AIX6.1 升级OpenSSH(摘自网络)
- scikit-learn中拟合结果的评价指标
- 实用代码块
- Android Studio建立多个项目
- UIView Key-frame Animations
- 安卓自定义圆角Button,继承Button类实现在xml设置圆角半径和背景颜色和点击背景颜色
- 一种改善软件用户界面友好性操作的方法
- SFTP 上传文件报错:SFTP ERROR?Algorithm negotiation fail
- MapReduce 运行机制
- yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法