博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode] Ugly Number
阅读量:6850 次
发布时间:2019-06-26

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

Problem

Ugly number is a number that only have factors 3, 5 and 7.

Design an algorithm to find the Kth ugly number. The first 5 ugly numbers are 3, 5, 7, 9, 15 ...

Example

If K=4, return 9.

Note

数组primes是三个基数;初始化以Long.valueOf(x)分别存入。

要存储基数之后按顺序生成的ugly number,可以使用PriorityQueue。

建立PriorityQueue<Long> Q,先放入primes的基数。

建立HashMap,标记Q中已存入的值,必须和放入Q的操作同步。

为了计算后面的ugly number,循环从Q中poll出前端的元素(i=0; i<k; i++)存入新的数num,再循环计算出num和primes中三个数的和。若求得的和num*prime[j]在map中没有标记过,则加入Q里,并在map标记;若标记过,不操作,继续外层poll的循环。当外层循环停止的时候,正好poll出第k个数存入num,return。

用example举例:

//primes = [3, 5, 7];    //Q = {3, 5, 7};        //map = {(3, true), (5, true), (7, true)};    //num = 3: Q.add(9, 15, 21); map.put(9,, 15,, 21, true);    //num = 5: Q.add(15->no, 25, 35), map.put(25,, 35, true);    //num = 7: Q.add(25->no, 35->no, 49), map.put(49, true);    //k = 4: loop i stops, num = 9; ...; return num = 9;

Solution

class Solution {    public long kthPrimeNumber(int k) {        Queue
Q = new PriorityQueue
(); HashMap
map = new HashMap
(); Long[] primes = new Long[3]; primes[0] = Long.valueOf(3); primes[1] = Long.valueOf(5); primes[2] = Long.valueOf(7); for (int i = 0; i < 3; i++) { Q.add(primes[i]); map.put(primes[i], true); } Long num = Long.valueOf(0); for (int i = 0; i < k; i++) { num = Q.poll(); for (int j = 0; j < 3; j++) { if (!map.containsKey(primes[j] * num)) { Q.add(primes[j] * num); map.put(primes[j] * num, true); } } } return num; }}

转载地址:http://rdgul.baihongyu.com/

你可能感兴趣的文章
Java8中的LocalDateTime工具类
查看>>
Exchange 2013 PowerShell创建自定义对象
查看>>
RAID-10 阵列的创建(软)
查看>>
javaScript的调试(四)
查看>>
nginx不使用正则表达式匹配
查看>>
利用putty进行vnc + ssh tunneling登录
查看>>
js重定向---实现页面跳转的几种方式
查看>>
hadoop1.x作业提交过程分析(源码分析第二篇)
查看>>
默认安装vsftpd后
查看>>
《Redis设计与实现》读书笔记
查看>>
waiting for changelog lock.
查看>>
小白学爬虫-批量部署Splash负载集群
查看>>
你离BAT之间,只差这一套Java面试题
查看>>
laravel package 推荐,数据备份
查看>>
Synchronized锁在Spring事务管理下,为啥还线程不安全?
查看>>
环境变量PATH cp命令 mv命令 文档查看cat/more/less/head/tail
查看>>
阿里云亮相2019联通合作伙伴大会,边缘计算等3款云产品助力5G时代产业数字化转型...
查看>>
dubbo源码分析-服务端发布流程-笔记
查看>>
阿里云发布Apsara SA系列混合云存储阵列
查看>>
GoJS教程:链接模版
查看>>