[LeetCode] Ugly Number II
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.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
这题是Ugly Number 的进阶题,其中一种比较简单粗暴的做法是写一个循环,然后把每个数都扔进isUglyNumber 里判断。
后面根据提示,ugly number 肯定是由其他ugly number 相乘产生的,于是要只要根据 2,3,5 分别产生出3个ugly number 的list, 然后用merge sort 的merge 思路,把三个list 合并成一个有序的list。这个算法口述比较麻烦,最好是画一个图。
| 2 | 3 | 5 | min | 
| 2 * 1 | 3 * 1 | 5 * 1 | 2 | 
| 2 * 2 | 3 * 1 | 5 * 1 | 3 | 
| 2 * 2 | 3 * 2 | 5 * 1 | 4 | 
| 2 * 3 | 3 * 2 | 5 * 1 | 5 | 
| 2 * 3 | 3 * 2 | 5 * 2 | 6 | 
| 2 * 4 | 3 * 3 | 5* 2 | 8 | 
根据这个列表来计算的话可以一直延长uglynumber 列表,每一列表示2,3,5产生的列表,每行表示一次迭代,最右边的min 列表示每次迭代产生的uglynumber。
算法就是每次都选三列中最小那个,然后更新那一列,更新的方法就是乘以当前ugly 列表里的数。比如列2,第一次乘以1,因为1是ugly list 的第一个元素,1*2 = 2,2 被选为下一ugly number, 所以要更新列2, 现在就要用2 乘以ugly list的第二个元素,即刚刚添加进去的2。
/**
* @param {number} n
* @return {number}
*/
var nthUglyNumber = function(n) {
if (n <= 0) return [];
var arr = [1];
var l = [1,1,1];
var c = [2,3,5];
var index = [0,0,0]; while (n > arr.length) {
var min = l[0] * 2;
for (var i = 0; i < 3; i++) {
l[i] = arr[index[i]] *c[i];
min = Math.min(min, l[i]);
} for (var i = 0; i < 3; i++) {
if (l[i] == min) {
index[i]++;
}
} arr.push(min);
} return arr[arr.length-1];
};
[LeetCode] Ugly Number II的更多相关文章
- [LeetCode] Ugly Number II 丑陋数之二
		
Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...
 - [LeetCode] Ugly Number II (A New Question Added Today)
		
Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...
 - LeetCode() Ugly Number II   背下来!
		
一个别人,非常牛逼的思路,膜拜了!orz!!!! vector <int> results (1,1); int i = 0, j = 0, k = 0; while (results.s ...
 - Leetcode之动态规划(DP)专题-264. 丑数 II(Ugly Number II)
		
Leetcode之动态规划(DP)专题-264. 丑数 II(Ugly Number II) 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n ...
 - 【LeetCode】264. Ugly Number II
		
Ugly Number II Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose ...
 - leetcode 263. Ugly Number  、264. Ugly Number II  、313. Super Ugly Number  、204. Count Primes
		
263. Ugly Number 注意:1.小于等于0都不属于丑数 2.while循环的判断不是num >= 0, 而是能被2 .3.5整除,即能被整除才去除这些数 class Solution ...
 - [leetcode] 264. Ugly Number II (medium)
		
263. Ugly Number的子母题 题目要求输出从1开始数,第n个ugly number是什么并且输出. 一开始想着1遍历到n直接判断,超时了. class Solution { public: ...
 - 【刷题-LeetCode】264. Ugly Number II
		
Ugly Number II Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose ...
 - [LeetCode] Ugly Number 丑陋数
		
Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers ...
 
随机推荐
- HDU 3535 分组混合背包
			
http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件 ...
 - MySQL知识点链接
			
1.使用ab进行压力测试详解 http://www.365mini.com/page/apache-benchmark. ...
 - mysql同一台服务器上不同数据库中个别表内容同步
			
>>>>>>soft_wsx>>>>>>--数据备份与还原>>同步备用服务器--1.完全备份主数据库--2.使用带S ...
 - Appium+Robotframework实现Android应用的自动化测试-6:一个简单的例子
			
万事具备,只欠编码! 下面看一个简单的示例,这个示例验证Android手机自带的通讯录的添加联系人的操作是否成功.这个例子是Appium官网自带的示例,有兴趣的同学也可以自己下载来研究和学习,下载地址 ...
 - C++ 中超类化和子类化常用API
			
在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWi ...
 - 关于MySQL count(distinct) 逻辑的一个bug【转】
			
本文来自:http://dinglin.iteye.com/blog/1976026#comments 背景 客户报告了一个count(distinct)语句返回结果错误,实际结果存在值,但是用cou ...
 - storyboard在ios模拟器无法显示的问题
			
一.问题描述 1.在原有项目新建一个名称为test的storyboard类型的文件. 2.test.storyboard添加View Controller,并设置View Controller下Vie ...
 - JS  基础  入门
			
JS做弹窗效果 //单行注释/*多行注释*/// 网页 标签语言 js语言是脚本语言/* 数据类型: 容器 1.整型 (int) 2.小数类型: float: 单精度的小数: double: ...
 - 从API请求数据的方法(主要适用于tp5)
			
// 从api获取数据,$data是一个数组,默认为空,请求数据的方法可以通用,但是其它说明只适用于tp5 function postData($url,$data=''){ $ch = curl_i ...
 - iOS- 如何改变section header
			
希望这个从UITableViewDelegate协议里得到的方法可以对你有所帮助: - (UIView *) tableView:(UITableView *)tableView viewForHea ...