【问题描述】[中等]

【解答思路】

1. 动态规划


时间复杂度:O(N) 空间复杂度:O(N)

class Solution {public int nthUglyNumber(int n) {int a = 0, b = 0, c = 0;int[] dp = new int[n];dp[0] = 1;for(int i = 1; i < n; i++) {int n2 = dp[a] * 2, n3 = dp[b] * 3, n5 = dp[c] * 5;dp[i] = Math.min(Math.min(n2, n3), n5);if(dp[i] == n2) a++;if(dp[i] == n3) b++;if(dp[i] == n5) c++;}return dp[n - 1];}
}作者:jyd
链接:https://leetcode-cn.com/problems/chou-shu-lcof/solution/mian-shi-ti-49-chou-shu-dong-tai-gui-hua-qing-xi-t/
2. 堆


时间复杂度:O(N) 空间复杂度:O(1)

class Solution {public int nthUglyNumber(int n) {PriorityQueue<Long> pq = new PriorityQueue<>();Set<Long> s = new HashSet<>();//初始化,放进堆和set,发现1要开Long数组才可以long[] primes = new long[]{2, 3, 5};for (long prime : primes) {pq.offer(prime);s.add(prime);}long num = 1;for (int i = 1; i < n; i++) {num = pq.poll();//遍历三个因子for (int j = 0; j < 3; j++) {if (!s.contains(num * primes[j])) {pq.offer(num * primes[j]);s.add(num * primes[j]);}}}return (int) num;}
}作者:jerry_nju
链接:https://leetcode-cn.com/problems/chou-shu-lcof/solution/dui-he-dong-tai-gui-hua-si-lu-xiang-jie-by-jerry_n/

【总结】

1.动态规划流程

第 1 步:设计状态
第 2 步:状态转移方程
第 3 步:考虑初始化
第 4 步:考虑输出
第 5 步:考虑是否可以状态压缩

2.优先队列 按大小弹出 溢出问题long 去重set

参考链接:
https://leetcode-cn.com/problems/chou-shu-lcof/solution/dui-he-dong-tai-gui-hua-si-lu-xiang-jie-by-jerry_n/
参考链接:https://leetcode-cn.com/problems/chou-shu-lcof/solution/mian-shi-ti-49-chou-shu-dong-tai-gui-hua-qing-xi-t/

[剑指offer]面试题第[49]题[Leetcode][第264题][JAVA][丑数][动态规划][堆]相关推荐

  1. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

    [问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...

  2. [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]

    [剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...

  3. 剑指offer——面试题49:把字符串转换成整数

    剑指offer--面试题49:把字符串转换成整数 Solution1: 代码写的啰嗦,但思路清晰..LeetCode上有相似的题目并考虑了溢出,可以参考LeetCode8答案 class Soluti ...

  4. 算法题001 剑指Offer 面试题三:二维数组中的查找

    剑指Offer题目1:二维数组中的查找 题目描述: http://ac.jobdu.com/problem.php?cid=1039&pid=0 在一个二维数组中,每一行都按照从左到右递增的顺 ...

  5. 【剑指Offer面试题】 九度OJ1510:替换空格

    c/c++ 中的字符串以"\0"作为结尾符.这样每一个字符串都有一个额外字符的开销. 以下代码将造成内存越界. char str[10]; strcpy(str, "01 ...

  6. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  7. (待补充)【n个骰子的点数】剑指offer——面试题43:n个骰子的点数

    剑指offer--面试题43:n个骰子的点数 [注意]此题再牛客网上没有OnlineJudge,在此补充解法. 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值 ...

  8. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数

    剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...

  9. 【有返回值的回溯】剑指offer——面试题67——机器人的运动范围(回溯法)

    剑指offer--面试题67:机器人的运动范围(回溯法) Solution1: 此题和66题均是典型的回溯法题目,对比记忆思路! class Solution {public:int movingCo ...

最新文章

  1. 手机归属地和ip定位
  2. vs2013中的error c4996的问题
  3. Dockerizing a Node.js web app
  4. VBS脚本常用经典代码收集
  5. 神奇的问题记录【SqlDataAdapter Fill DataSet】
  6. Android短信发送流程之普通短信发送(原)
  7. 《剑指offer》答案整理
  8. .NET Core Community 第三个千星项目诞生:爬虫 DotnetSpider
  9. java文章上一篇下一篇_每个人都必须阅读的10篇Java文章
  10. Java实验输出希腊字母表
  11. html表格数据按公式自动计算,Word表格怎么自动填充和计算数据
  12. java中的math_Java中math类的常用方法
  13. 设计模式七大原则——里氏替换原则
  14. 安卓手机格式化怎么弄_安卓手机怎么格式化 Android手机内存卡格式化方法
  15. 线段树(lazy用法)
  16. kubectl config 命令
  17. 游戏里经常有涉及用户排行榜(金币消费排行榜),怎么设计一个良好的排行榜。
  18. 2022年测试工程师高频面试题及答案【python篇】
  19. [AGC004E] Salvage Robots (DP)
  20. 有关华为的七大猜想:或在国内屈居老二

热门文章

  1. React - S1
  2. apache cgi 模块安装
  3. sql where in 排序问题
  4. idea 错误: 找不到或无法加载主类(汇总贴)
  5. 日志 中文乱码、nacos 中文乱码、saltstack 中文乱码、docker中文乱码
  6. Spring Security 认证执行流程
  7. onSaveInstanceState与onRestoreInstanceState何时调用、如何使用
  8. 在windows 2003系统安装oracle11G出现的问题
  9. Oracle rman备份和还原恢复数据库
  10. win8.1 linux系统,电脑显示win8.1linux系统失效的原因及解决办法!