丑数

问题描述:我们只把包含因子2、3和5的数称为丑数。求按从小到大的顺序的第1500个丑数。

分析:要找到第i个丑数,需要用辅助数组存储前面i-1个丑数,用空间换取时间。

package com.wyl;
/*** 求丑数* 问题描述:我们只把包含因子2、3和5的数称为丑数。求按从小到大的顺序的第1500个丑数。* @author wyl**/
public class UglyNumber {/*** 得到第number个丑数* @param number* @return*/public int getUglyNumber(int number){int[] uglyNumbers = new int[number]; //用来存储丑数uglyNumbers[0] = 1; //第一个丑数为1int nextUglyIndex = 1; //控制给uglyNumbers数组存储丑数的下标int uglyNumber2 = 0; //记录乘以2的指针int uglyNumber3 = 0; //记录乘以3的指针int uglyNumber5 = 0; //记录乘以5的指针while(nextUglyIndex < number){//要存储的丑数必须是uglyNumber2*2、uglyNumber3*3和uglyNumber5*5中最小的数,//并且更新uglyNumber2、uglyNumber3和uglyNumber5的指针,//保证存在某个丑数使得要存储的丑数左边的丑数*2都比它 小,右边的*2都比它大//保证存在某个丑数要存储的丑数左边的丑数*3都比它 小,右边的*3都比它大//保证存在某个丑数要存储的丑数左边的丑数*5都比它 小,右边的*5都比它大int min = Min(uglyNumbers[uglyNumber2] * 2, uglyNumbers[uglyNumber3] * 3, uglyNumbers[uglyNumber5] * 5);uglyNumbers[nextUglyIndex] = min;while(uglyNumbers[uglyNumber2] * 2 <= uglyNumbers[nextUglyIndex]){++uglyNumber2; //移动乘2的指针
            }while(uglyNumbers[uglyNumber3] * 3 <= uglyNumbers[nextUglyIndex]){++uglyNumber3; //移动乘3的指针
            }while(uglyNumbers[uglyNumber5] * 5 <= uglyNumbers[nextUglyIndex]){++uglyNumber5; //移动乘5的指针
            }++nextUglyIndex;}return uglyNumbers[number-1];}

  //求三个整数中的最小值
private int Min(int i, int j, int k) {// TODO Auto-generated method stubint min = i<j?i:j;min = (min < k)?min:k;return min;}public static void main(String[] args) {UglyNumber uglyNumber = new UglyNumber();int uNumber = uglyNumber.getUglyNumber(10);System.out.println("第1500个丑数为:" + uNumber);} }

 

转载于:https://www.cnblogs.com/studyDetail/p/7238828.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jssdk分享设置_JSSDK自定义分享

web&#xff1a;1、引入JS文件&#xff1a;http://res.wx.qq.com/open/js/jweixin-1.4.0.js(支持https)http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (支持https)2、获取签名等参数wx.config({debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来&…

罗兰贝格84页白皮书:一文看懂中国ICT产业新黄金十年

来源&#xff1a;智东西中国信息和通信技术产业&#xff08;下称“ICT产业”&#xff09;蓬勃发展的黄金三十年&#xff0c;展现出了强大的市场吸引力与发展潜能。从上个世纪九十年代至今&#xff0c;ICT产业收入规模增长了340倍&#xff0c;保持双位数增长&#xff0c;领先全球…

Python之旅Day8 socket网络编程

socket网络编程 Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”&#xff0c;而打开一个Socket需要知道目标计算机的IP地址和端口号&#xff0c;再指定协议类型即可。socket服务一般分为服务端和客户端&#xff1b;与此同时&#xff0c;socke…

2020年五大虚拟现实和增强现实趋势

来源&#xff1a;AR工业应用2019年是VR/AR增长的一年&#xff0c;用户戴上VR头显就可以沉浸在计算机生成的环境中&#xff0c;VR在设计、营销、教育、培训和零售领域都有大量的需求。AR则通过屏幕或头显将计算机图像叠加到用户的真实世界视图上&#xff0c;预计2020年全球在XR技…

【实战练习】通过docker部署jenkins

jenkins官网 &#xff1a;https://jenkins.io/拉取jenkins Official Jenkins Docker image[rootip-172-31-16-58 ec2-user]# docker pull jenkins/jenkinsUsing default tag: latestlatest: Pulling from jenkins/jenkins06b22ddb1913: Pull complete336c28b408ed: Pull comp…

linux hive mysql_Linux下的Hive与Mysql安装

一&#xff0c;安装MySQLsudo apt-get install mysql-server mysql-client1). 建立数据库hive&#xff0c;create database hive;2). 创建用户hivecreate user ‘hive’’%’ identified by ‘hive’;3).创建hive用户,并授权grant all on hive.* to hive’%’ identified by ‘…

当AI实现多任务学习,它究竟能做什么?

来源&#xff1a;脑极体提到AI领域的多任务学习&#xff0c;很多人可能一下子就想到通用人工智能那里了。通俗意义上的理解&#xff0c;就像《超能陆战队》里的大白这样一种护理机器人&#xff0c;既能进行医疗诊断&#xff0c;又能读懂人的情绪&#xff0c;还能像陪伴机器人一…

mysql sql先后执行_MySQL中SQL语句执行顺序

(7) SELECT(8) DISTINCT (1) FROM (3) JOIN(2) ON (4) WHERE (5) GROUP BY (6) HAVING (9) ORDER BY (10) LIMIT 前期准备工作1、新建一个测试数据库create database testData;2、创建测试表,并插入数据如下&#xff1a;用户表订单表准备SQL逻辑查询测试语句SELECT a.user_id,C…

《自然》:欧洲根据已知基因序列合成新冠病毒,助力疫苗开发

来源&#xff1a;澎湃新闻当地时间5月4日&#xff0c;国际顶级学术期刊《自然》&#xff08;Nature&#xff09;以“加快评审文章”(Accelerated Article Preview)形式在线发表了来自瑞士、德国、俄罗斯多家科研机构的一项研究“Rapid reconstruction of SARS-CoV-2 using a sy…

转:日志组件logback的介绍及配置使用方法

转自&#xff1a;http://blog.csdn.net/zgmzyr/article/details/8267072 一、logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块&#xff1a;logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。lo…

谷歌论文:使用深度强化学习的芯片布局

来源&#xff1a;半导体行业观察摘 要在本项目中&#xff0c;我们提出了一种基于学习的芯片布局方法&#xff0c;这是芯片设计过程中最复杂&#xff0c;最耗时的阶段之一。与以前的方法不同&#xff0c;我们的方法具有从过去的经验中学习并随着时间的推移而不断改进的能力。特别…

联动菜单实现思路

1: 选择select时,如何触发? 哪种事件? onchange2: 如何获取被选中的option的值 ? selectobj.value3: 动态生成option innerHTML <select name"add" οnchange"change()"><option value"">请选择</option><option value…

mysql中主从复制包括什么意思_Mysql主从复制作用和工作原理

一、什么是主从复制主从复制&#xff0c;是用来建立一个和主数据库完全一样的数据库环境&#xff0c;称为从数据库&#xff0c;主数据库一般是准实时的业务数据库。在最常用的mysql数据库中&#xff0c;支持单项、异步赋值。在赋值过程中&#xff0c;一个服务器充当主服务器&am…

吴建平院士:互联网视频技术在疫情防控中的重要作用

来源&#xff1a;互联网天地杂志疫情期间&#xff0c;要关注新一代信息技术助力疫情防控这个主题。最近新的技术非常多&#xff0c;但有一项技术可能被遗忘了&#xff0c;它属于新一代信息技术系列&#xff0c;在防控疾病或生活中发挥着很重要的作用&#xff0c;那就是互联网视…

java比较炫的小程序_推荐三款私藏多年的微信小程序

【小程序】(文后有福利)酷友们&#xff0c;大家好&#xff01;今天一次性给大家介绍三款实用的微信小程序吧。这三款微信小程序基本上可以卸掉对应的 APP 了。同等功能下的 APP 和 微信小程序&#xff0c;当然会选择后者嘛&#xff0c;不仅消耗内存小&#xff0c;而且方便。1. …

2019年全球数字化转型现状研究报告

来源&#xff1a;Prophet数字化是整个企业范围内的优先战略事项我们的年度《数字化转型现状》研究迎来第五个年头&#xff0c;继续记录企业的不断发展。随着颠覆性技术及其对各大企业和市场的影响力不断加大&#xff0c;我们的研究旨在捕捉促成现代数字化转型的变化和趋势。201…

java settcpnodelay_Python Twisted TCP socket如何设置TCP的NODELAY(禁用Nagle算法)?

我有一个正在继续开发的实时多人游戏(它目前在app store:https://itunes.apple.com/us/app/blewp!-eat-or-be-eaten-mmo/id996122625?mt8)上直播&#xff0c;我使用TCP和UDP发送实时消息(TCP用于需要可靠性的消息&#xff0c;比如玩家死亡)&#xff0c;服务器端是用python编写…

magent + memcached部署过程

magent memcached架构图 安装步骤如下&#xff1a; ------------------10.1.64.196 10.1.64.197 10.1.65.104 10.1.65.107 memcached (存储节点)---------------------------------------- yum install gcc mkdir /usr/local/src/memcached cd /usr/local/src/memcached ta…

BBC神作:半导体如何改变世界

来源&#xff1a;电子工程师笔记在纪录片领域BBC一直是打遍天下无敌手的存在作为纪录片王牌制作方近期&#xff0c;BBC与FedEx联合推出了神作Made on Earth系列《The humble mineral that transformed the world》作为零差评的重要一集用叹为观止的精良画面为观众讲述了半导体常…

jmeter练习(5)关联升级版—ForEach控制器(提取多个响应结果并依次传参)

前言&#xff1a;大多数情况下&#xff0c;我们会从上一个请求的响应结果中提取某一个值&#xff0c;作为第二个请求的参数进行传参&#xff0c;但是有时候为了提高测试效率&#xff0c;尽可能制造少的测试数据&#xff0c;我们需要从上一个请求的响应结果中获取某一组相同类型…