丑数系列的题看这一道就可以了

/*
和ugly number2差不多,不过这次的质因子多了,所以用数组来表示质因子的target坐标
target坐标指的是这个质因子此次要乘的前任丑数是谁
*/
public int nthSuperUglyNumber(int n, int[] primes) {
//记录相乘坐标,存的是每个质因子对应相乘搭档在丑数数组中的下标
int[] target = new int[primes.length];
//动态规划数组
int[] dp = new int[n];
//第一个丑数是0
dp[0] = 1;
for (int i = 1; i < n; i++) {
//每次都要把所有质因子都乘上对应数试试,维护一个min和一个index
int min = Integer.MAX_VALUE;
int index = 0;
for (int j = 0; j < primes.length; j++) {
if (min>primes[j]*dp[target[j]])
{
min = primes[j]*dp[target[j]];
index = j;
}
//别忘了,如果有另外的质因子也组成了相同的数,那么这个质因子的target要跳过
//因为得到相同丑数的组合只保留一种即可
//在丑数2中,由于是分别判断2,3,5,所以重复的组合都跳过了
else if (min==primes[j]*dp[target[j]]) target[j]++;
}
//更新dp和target
dp[i] = min;
target[index]++;
}
return dp[n-1];
}

最新文章

  1. 安卓端360度全景图的html5实现
  2. Java 隐藏和覆盖
  3. oracle常用操作指令
  4. [OpenGL] 1、环境搭建及最小系统
  5. 2012 #3 Arcane Numbers
  6. Nexus中自定义私服,每个项目都用独立的工厂,仓库
  7. zencart技术联盟交流群
  8. bzoj 1187: [HNOI2007]神奇游乐园 插头dp
  9. WCF与Web API 区别
  10. Java 代码性能优化
  11. [译]Selenium Python文档:二、初步开始
  12. QT制作一个图片播放器
  13. 房上的猫:while循环与do-while循环,debug的调试运用
  14. nginx1.14.0日志打印
  15. UBUNTU安装 Rabbitvsc可视化版本控制客户端软件
  16. Swift重写UIButton的图片和标题的位置
  17. Manacher 计算最长回文串
  18. Django之modelform修改数据库
  19. 一、用Delphi10.3模拟读取百度网页,并读取相关头部信息
  20. Delphi 模式窗体返回值ModalResult的使用方法及注意事项

热门文章

  1. Beta冲刺随笔——Day_One
  2. SpringCloud 源码系列(2)—— 注册中心 Eureka(中)
  3. 前端vue小知识点
  4. Django匆匆一眼却解答了多年疑惑
  5. .NET Core/.NET 5.0 析构函数依然有效?
  6. 第5.2节 Python的函数参数收集
  7. 老猿学5G随笔:RAN、RAT以及anchor移动性锚点的概念
  8. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件概述和属性介绍
  9. PyQt(Python+Qt)学习随笔:QScrollArea的alignment属性不起作用的原因
  10. 问题:PyCharm的几种调试方法的区别