丑数 II 力扣(动态规划)JAVA

news2024/11/25 6:29:22

给你一个整数 n ,请你找出并返回第 n 个 丑数 。

丑数 就是只包含质因数 2、3 和/或 5 的正整数。

示例 1:

输入:n = 10
输出:12
解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。

示例 2:

输入:n = 1
输出:1
解释:1 通常被视为丑数。

提示:

1 <= n <= 1690

解题思路:

1、一个数是丑数,那么这个数 * 2* 3* 5仍然是丑数,可以用动态规划解题

2、初始值 dp[1] = 1

3、设立三个指针p1、p2、p3从1开始指向,分别代表dp[p1] * 2, dp[p2] * 3, dp[p3] *5选取最新小值并移动对应指针即可

代码:

class Solution {
    public int nthUglyNumber(int n) {
          int dp[] = new int [n + 1];
          dp[1] = 1;
          int p1 = 1, p2 = 1, p3 = 1;
          for(int i = 2; i <= n; i ++) {
        	  dp[i] = Math.min(dp[p1] * 2, Math.min(dp[p2] * 3, dp[p3] * 5));
        	  if(dp[i] == dp[p1] * 2) p1 ++;
        	  if(dp[i] == dp[p2] * 3) p2 ++;
        	  if(dp[i] == dp[p3] * 5) p3 ++;
          }
          return dp[n];
    }
}

在这里插入图片描述
注意:不能用if else语句因为6 * 2 = 4 * 3 = 12,此时就不光光只有一个指针移动了。

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

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

相关文章

MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

文章目录 前言 一 MySQL数据库 1.1 什么是数据库&#xff1f; 1.2 RDBMS 术语 1.3 DBMS解释 1.4 数据库分类 1.5 MySQL现状 二 在Linux/UNIX 上安装 MySQL 2.1 安装 MySQL 2.2 验证 MySQL 安装 2.3 使用 MySQL Client(Mysql客户端) 执行简单的SQL命令 2.4 Mysql安装…

153、仿真-基于51单片机四相步进电机正反转控制系统设计(程序+Proteus仿真+参考论文+流程图+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、设计功能 二、Proteus仿真图​ 三、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&#xff1a;ST…

代码随想录算法训练营一刷总结

第一次系统地刷leetcode 经过两个多月终于一刷完结 虽然不是按部就班每天都写 但总算坚持下来了 夸夸自己&#xff01;&#xff01; 非常感谢卡哥 题目的解析都写的很清楚易懂 才让我能够坚持这么一题一题做下来 没有卡住不前 训练营的学习氛围让我感受到很多小伙伴在和我一起…

服务器数据库中了Locked勒索病毒,企业应该如何正确处理并采取后续防护措施

网络技术的发展极大地方便了人们的工作生活&#xff0c;但同样带来了一定的网络安全威胁&#xff0c;其中较为危险的威胁就是勒索病毒攻击&#xff0c;勒索病毒不仅会给我们的计算机系统带来破坏&#xff0c;还会加密我们的重要文件数据来敲诈勒索&#xff0c;只有用户支付的赎…

灾备基础学习

灾备 灾备&#xff1a;灾备是容灾和备份的简称&#xff0c;它是利用科学的技术手段和方法&#xff0c;提前建立系统化的数据应急方式&#xff0c;以应对灾难的发生。其内容包括&#xff1a;数据备份、系统备份、业务连续规划、人员架构、通信保障、危机公关、灾难恢复规划、灾…

ES6基础知识五:你是怎么理解ES6新增Set、Map两种数据结构的?

如果要用一句来描述&#xff0c;我们可以说 Set是一种叫做集合的数据结构&#xff0c;Map是一种叫做字典的数据结构 什么是集合&#xff1f;什么又是字典&#xff1f; 集合 是由一堆无序的、相关联的&#xff0c;且不重复的内存结构【数学中称为元素】组成的组合 字典 是…

unity的asmdef报错GUID(这个报错记得重现一下,报错信息作为标题记录一下)

这应该是unity给这个程序集分配的guid unity基于2020开发的科骏插件1.0.8&#xff0c;放到了2017.首先出现的这个报错。 解决方法是将这个asmdef删除。asmdef简单来说是 库的描述信息文件。相关参考 初步理解Unity的asmdef 删掉就没分库直接所有源码在工程。简单来说就是编译…

深度学习:Pytorch最全面学习率调整策略lr_scheduler

深度学习&#xff1a;Pytorch最全面学习率调整策略lr_scheduler lr_scheduler.LambdaLRlr_scheduler.MultiplicativeLRlr_scheduler.StepLRlr_scheduler.MultiStepLRlr_scheduler.ConstantLRlr_scheduler.LinearLRlr_scheduler.ExponentialLRlr_scheduler.PolynomialLRlr_sched…

Nginx 301 https跳转后出现跨域和混合内容问题 —— 筑梦之路

问题 在浏览器地址栏敲入url访问静态资源目录时&#xff0c;发现默认跳转到了http协议的地址 如上图所示&#xff0c;客户端https请求先到达API网关&#xff0c;然后网关将请求通过http协议转发到静态资源服务器。 调出浏览器发现客户端发送的https请求收到了一个301状态码的响…

WPF实现DiagramChart

1、文件架构 2、FlowChartStencils.xaml <ResourceDictionary xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:s"clr-namespace:DiagramDesigner"xmlns:c&…

数据结构【数组、串、广义表】

第四章 数组、串、广义表 一、数组 1.概念&#xff1a;线性表是通过数组实现的&#xff0c;数组是线性表的推广&#xff0c;数组只有存取元素和修改元素的操作&#xff08;除了初始化和销毁&#xff09;&#xff1b; 2.数组的存储结构&#xff1a;一个数组的所有元素在内存中占…

第八章:list类

系列文章目录 文章目录 系列文章目录前言list的介绍及使用list的介绍list的使用list的构造函数list的迭代器list的容量list的成员访问list的增删改查 list与vector的对比总结 前言 list是STL的一种链表类&#xff0c;可以在常数范围内在任意位置进行插入和删除的序列式容器。 …

【iOS】isKindOfClass和isMemberOfClass方法

前言 这个归根结底还是在考察我们对isa走向图和类的继承的理解&#xff0c;也就是苹果官方这幅图&#xff1a; 接下来的函数调用流程请参考这张图。 1 isKindOfClass方法 1.1 objc_opt_isKindOfClass C函数 查看源码可发现&#xff0c;无论是谁调用isKindOfClass方法都会…

系统学习Linux-MySQL服务基础(一)

一、MySQL服务概述 什么是数据库&#xff1f; 将大量数据保存起来&#xff0c;通过计算机加工而成的可以进行高效访问的数据集合 数据库是存储、管理和操作组织化数据的软件系统 数据库能干什么&#xff1f; 企业应用存放用户数据、管理企业数据金融行业存储分析客户的财务…

Stable Diffusion在各种显卡上的加速方式测试,最高可以提速211.2%

Stable Diffusion是一种基于扩散模型的图像生成技术&#xff0c;能够从文本生成高质量的图像&#xff0c;适用于CG&#xff0c;插图和高分辨率壁纸等领域。 但是它计算过程复杂&#xff0c;使得它的生成速度较慢。所以研究人员就创造了各种提高其速度的方式&#xff0c;比如Xf…

Springboot读取配置的一些方式

从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一&#xff0c;但就是这么常用的功能&#xff0c;仍然有很多开发者在这个方面踩坑。 下面整理了几种获取配置属性的方式&#xff0c;弄清配置加载、读取的底层原理&#xff0c;一旦出现问题可以分析。 以下示例源…

Linux基础开发工具之Linux编译器的使用(gcc/g++)

目录 前言 1.背景知识介绍 2.预处理阶段 3.编译阶段 4.汇编阶段 5.链接过程 5.1 函数库 5.1.1 静态库和动态库 5.2 链接过程的具体内容 总结 前言 大家好呀&#xff0c;许久没给大家更新了&#xff0c;对于我们在Linux环境下编程&#xff0c;之前小编只是给大家介绍…

Ubuntu安装JDK与IntelliJ IDEA

目录 前言 Ubuntu安装JDK 1、更新软件包列表 2、安装OpenJDK 3、验证安装 Ubuntu安装IntelliJ IDEA 1、下载 IntelliJ IDEA 2、解压缩 IntelliJ IDEA 安装包 3、移动 IntelliJ IDEA 到安装目录 4、启动 IntelliJ IDEA 前言 APT&#xff08;Advanced Package Too…

react 在build读取env 数据

默认会读取.env 文件 npm install dotenv --save npm install dotenv-cli --save-dev例如读取.env.test "build:test": "dotenv -e .env.test react-app-rewired build",.env.test REACT_APP_CURRENTMODE devREACT_APP_Public_Path "https://baid…

VUE中的生命周期、每个生命周期可以干什么

生命周期 就VUE来说就是一个程序的即将创建到销毁的一个过程&#xff0c;也就是vm对象实例从创建到最终销毁的过程。 VUE生命周期4个阶段8个钩子函数(到某一阶段自动调用的函数) 1.初始阶段&#xff08;虚拟的DOM生成&#xff09; beforeCreate() 初始化事件对象和生命周期…