博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
首先看K一个难看的数字
阅读量:6975 次
发布时间:2019-06-27

本文共 974 字,大约阅读时间需要 3 分钟。

把仅仅包括质因子2、3和5的数称作丑数(Ugly Number),比如:2,3,4,5,6,8,9,10,12,15,等,习惯上我们把1当做是第一个丑数。


写一个高效算法,返回第n个丑数。

import static java.lang.Math.min;import static java.lang.System.out;public class UglyNumber {	public static void main(String[] args) {		out.println(findKthUglyNumber(1500));	}	/**	 * 寻找第K个丑数	 * 	 * @param k	 * @return	 */	public static int findKthUglyNumber(int k) {		if (k < 0) {			return 1;// 把第一个丑数返回		}		int[] numbers = new int[k];		numbers[0] = 1;		int next = 1;		int ugly2Index = 0;		int ugly3Index = 0;		int ugly5Index = 0;		while (next < k) {			int uglyNum = min(numbers[ugly2Index] * 2,					min(numbers[ugly3Index] * 3, numbers[ugly5Index] * 5));			numbers[next] = uglyNum;			while (numbers[ugly2Index] * 2 <= numbers[next]) {				ugly2Index++;			}			while (numbers[ugly3Index] * 3 <= numbers[next]) {				ugly3Index++;			}			while (numbers[ugly5Index] * 5 <= numbers[next]) {				ugly5Index++;			}			next++;		}		return numbers[k - 1];// 从0開始	}}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
一分钟了解阿里云产品:先知计划
查看>>
Centos 7环境下源码安装PostgreSQL数据库
查看>>
推荐一款 Flutter Push 推送功能插件
查看>>
数据结构(队列实现篇)
查看>>
iframe 数据传递
查看>>
ionic app 开发和生产环境的配置
查看>>
javascript数据结构与算法-队列
查看>>
如何定时备份数据库并上传七牛云
查看>>
如何选取合适的前端动效方案?
查看>>
js的执行机制
查看>>
[swift 进阶]读书笔记-第十一章:互用性 C11P1 实践:封装 CommonMark
查看>>
我的友情链接
查看>>
TypeScript 从听说到入门(上篇)
查看>>
JavaScript 闭包
查看>>
redis(4)
查看>>
koa+mongoose基础入门
查看>>
vue下实现textarea类似密码框的功能之探索input输入框keyup,keydown,input事件的触发顺序...
查看>>
python数据池连接PG
查看>>
如何开发一个区块链应用程序
查看>>
Cookie 位置_无需整理
查看>>