首先看K一个难看的数字

首先看K一个难看的数字

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

把仅仅包括质因子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開始
	}

}

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117395.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • (译) JSON-RPC 2.0 规范(中文版)

    (译) JSON-RPC 2.0 规范(中文版)

    2021年9月3日
    59
  • Android视频直播的实现(包括服务器搭建)

    Android视频直播的实现(包括服务器搭建)最近一段时间,视频直播可谓大火。在视频直播领域,有不同的商家提供各种的商业解决方案,包括软硬件设备,摄像机,编码器,流媒体服务器等。本文要讲解的是如何使用一系列免费工具,打造一套视频直播方案。视频直播流程视频直播的流程可以分为如下几步:采集—>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放1.采集采集是整个视频推流过…

    2022年6月3日
    64
  • mysql连接远程数据库_plsql连接远程数据库

    mysql连接远程数据库_plsql连接远程数据库  新安装的MySQL只有一个root用户,默认不开启远程连接。下面以Ubuntu系统下的MySQL为例,说明如何远程连接MySQL数据库。登录root用户mysql-uroot-pyongdu查看mysql数据库中的所有表mysql>showdatabases;+——————–+|Database|+——-…

    2022年10月13日
    5
  • springboot的单元测试(junit单元测试实例)

    转载 原文:https://www.codenong.com/cs106212170/文章目录一.Junit测试二.集成测试1.SpringBoot测试-测试其中的Bean2.SpringBootWeb测试-启动tomcat3.SpringBootWeb测试-不启动tomcat(模拟环境)三.单元测试1.web层测试2.mybtismapper测试3.测试任意的bean4.Mock操作四.相关注解的汇总五.参考网站一.Junit测试当你的单元测试代码不需要用到..

    2022年4月13日
    34
  • Android 使用substring截取字符串

    Android 使用substring截取字符串请看如下代码://截取第一个字符StringNumOne=”A01013″.substring(0,1);//截取第一个字符之后的所有字符StringLastData=”A01013″.substring(1);StringNumOne1=”你好!”.substring(0,2);StringLastDataNew=LastData.replaceAll(“(.{1})”,”$1-“);//加入’-‘符.

    2022年5月23日
    31
  • TCP拥塞控制算法(Tahoe/Reno/Newreno)

    TCP拥塞控制算法(Tahoe/Reno/Newreno)TCP拥塞控制算法(Tahoe/Reno/Newreno)前言TCP(TransmissionControlProtocol),传输控制协议,是目前__Internet__上最重要的一个通信协议之一,其作用是对数据的传输进行一定的控制;而拥塞控制算法又是TCP中最重要的一个算法之一,接下来我们先来了解一下基本概念,再来详细介绍3个协议中的拥塞控制算法以及他们之间的区别。前期知识储备及名词…

    2022年6月24日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号