【LeetCode每日一题】——LCR 168.丑数

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目注意】
  • 六【题目示例】
  • 七【题目提示】
  • 八【解题思路】
  • 九【时间频度】
  • 十【代码实现】
  • 十一【提交结果】

一【题目类别】

二【题目难度】

  • 中等

三【题目编号】

四【题目描述】

  • 给你一个整数 n ,请你找出并返回第 n 个 丑数 。
  • 说明:丑数是只包含质因数 23 和/或 5 的正整数;1 是丑数。

五【题目注意】

  • 本题与主站 264 题相同:https://leetcode-cn.com/problems/ugly-number-ii/

六【题目示例】

  • 示例 1
    • 输入: n = 10
    • 输出: 12
    • 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。

七【题目提示】

  • 1 <= n <= 1690

八【解题思路】

  • 其实这道题目很经典,一般我们使用动态规划解决
  • 不过我们本周的Topic为优先队列,所以使用小顶堆解决该问题
  • 思路其实都一样,首先将第一个丑数加入到小顶堆中,然后依次计算后面的丑数(丑数 * 2/3/5 = 丑数)并将其加入到小顶堆(还要注意不要加入重复的计算值,所以需要用到哈希表
  • 每次加入新的值之前都要以上一次计算的结果为基础(即弹出的堆顶元素)
  • 使用计数器判断是否得到目标数量的丑数
  • 最后返回结果即可

九【时间频度】

  • 时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn) n n n为传入的参数大小
  • 空间复杂度: O ( n ) O(n) O(n) n n n为传入的参数大小

十【代码实现】

  1. Java语言版
class Solution {public int nthUglyNumber(int n) {// 初始化小顶堆哈希表PriorityQueue<Long> heap = new PriorityQueue<Long>();Set<Long> hashMap = new HashSet<Long>();// 将第一个丑数加入到小顶堆哈希表heap.offer(1L);hashMap.add(1L);// 计算第n个丑数long res = 1;while (n > 0) {res = heap.poll();// 丑数 * 2 = 丑数if (!hashMap.contains(res * 2)) {heap.offer(res * 2);hashMap.add(res * 2);}// 丑数 * 3 = 丑数if (!hashMap.contains(res * 3)) {heap.offer(res * 3);hashMap.add(res * 3);}// 丑数 * 5 = 丑数if (!hashMap.contains(res * 5)) {heap.offer(res * 5);hashMap.add(res * 5);}// 计数用n--;}// 返回结果return (int)res;}
}
  1. Python语言版
class Solution:def nthUglyNumber(self, n: int) -> int:# 初始化小顶堆哈希表res = 0hashMap = set()heap = []# 将第一个丑数加入到小顶堆哈希表heapq.heappush(heap, 1)hashMap.add(1)# 计算第n个丑数while n > 0:res = heapq.heappop(heap)# 丑数 * 2 = 丑数if res * 2 not in hashMap:heapq.heappush(heap, res * 2)hashMap.add(res * 2)# 丑数 * 3 = 丑数if res * 3 not in hashMap:heapq.heappush(heap, res * 3)hashMap.add(res * 3)# 丑数 * 5 = 丑数if res * 5 not in hashMap:heapq.heappush(heap, res * 5)hashMap.add(res * 5)# 计数用n -= 1# 返回结果return res
  1. C++语言版
class Solution {
public:int nthUglyNumber(int n) {// 初始化小顶堆哈希表priority_queue<long, vector<long>, greater<long>> heap;unordered_set<long> hashMap;long res = 0;// 将第一个丑数加入到小顶堆哈希表heap.push(1);hashMap.insert(1);// 计算第n个丑数while (n > 0) {res = heap.top();heap.pop();// 丑数 * 2 = 丑数if (hashMap.find(res * 2) == hashMap.end()) {heap.push(res * 2);hashMap.insert(res * 2);}// 丑数 * 3 = 丑数if (hashMap.find(res * 3) == hashMap.end()) {heap.push(res * 3);hashMap.insert(res * 3);}// 丑数 * 5 = 丑数if (hashMap.find(res * 5) == hashMap.end()) {heap.push(res * 5);hashMap.insert(res * 5);}// 计数用n--;}// 返回结果return (int)res;}
};

十一【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C++语言版
    在这里插入图片描述


http://www.ppmy.cn/devtools/111268.html

相关文章

AI prompt(提示词)

# 好用的用于学习的AI提示词 ## 费曼学习法 请使用费曼学习法&#xff0c;用简单的语言解释&#xff08;量子力学&#xff09;是什么&#xff0c;并提供一个简单的例子来说明它如何应用 ## 帕累托法则&#xff08;80/20原则&#xff09; 将&#xff08;量子力学&#xff09;最…

喜报 | 知从科技荣获 “AutoSec 安全之星 - 优秀汽车软件供应链安全方案奖”

近日&#xff0c;「AutoSec 2024第八届中国汽车网络安全周暨第五届智能汽车数据安全展」在上海盛大举行。本届大会由谈思实验室和谈思汽车主办、上海市车联网协会联合主办&#xff0c;以汽车“网络数据安全、软件安全、功能安全”为主题&#xff0c;设置了“31X”模式&#xff…

Redis 集群高可用详解及配置

关型数据库 关系型数据库&#xff1a; 是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库中的数据 主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库 关型数据库的优缺点 特点&#xff1a; 1、数据关系模型基于关系…

数据管理生态的核心解析:数据库、数据仓库、数据湖、数据平台与数据中台的关系与实现

1. 数据管理的复杂生态 在大数据时代&#xff0c;企业不仅要处理日益增长的海量数据&#xff0c;还需要应对数据类型的多样化。数据可以是结构化的交易数据&#xff0c;也可以是非结构化的日志、社交媒体内容、图像和视频。面对这些挑战&#xff0c;企业必须构建一套能够高效存…

K均值聚类(K Means Cluster)—无监督学习方法、非概率模型、判别模型、线性模型、非参数化模型、批量学习

定义 输入: n n n个样本的集合 X X X; 输出:样本集合的聚类 C ⋅ C^{\cdot} C⋅。 (1)初始化。令 t 0 t0 t0,随机选择 k k k个样本点作为初始聚类中心 m ( 0 ) ( m 1 ( 0 ) , ⋯ , m l ( l ) , ⋯ , m k ( 0 ) ) m^{(0)} \big( m_1^{(0)},\cdots,m_l^{(l)},\cdots,m_k^{(0)…

【jvm】记一次hive堆heap内存溢出的排查

先看下java的内存模型 监控jvm工具&#xff1a;visualVM 摘录一下内容&#xff1a; 由c开发的jvm&#xff0c;它巧妙地设计了java的设计理念——即万物皆对象。并设计了这些对象应该如何存储&#xff0c;如何调用&#xff0c;并通过不断迭代设计让对象的存储和回收&#xff0…

[项目][WebServer][读取请求 解析请求]详细讲解

目录 1.ReadLine2.RecvRequest3.ParseRequest4.RecvRequestBody 1.ReadLine 读取的基本单位&#xff1a;按照行来进行读取不同平台&#xff0c;对行分隔符的处理可能不同&#xff0c;所以要有一个函数可以统一处理不同平台的情况&#xff0c;兼容各种行分隔符 \r\n\r\n 本函数…

sqli-labs靶场自动化利用工具——第11关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生&#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢&#xff1f;可能有些人会说不是有sqlmap&#…

无人机动力系统设计基础知识

无人机动力系统设计基础知识 1. 源由2. 组成3. 部件规格3.1 电机规格书1. 电机型号&#xff08;Model Number&#xff09;2. 尺寸和重量&#xff08;Dimensions & Weight&#xff09;3. Kv 值&#xff08;Kv Rating&#xff09;4. 电压范围&#xff08;Operating Voltage R…

QT 读取Excel表

一、QAxObject 读取excel表的内容&#xff0c;其仅在windows下生效&#xff0c;当然还有其他跨平台的方案。 config qaxcontainer #include <QAxObject>QStringList GetSheets(const QString& strPath) {QAxObject* excel new QAxObject("Excel.Application&…

【前端UI框架】VUE ElementUI 离线文档 可不联网打开

【前端UI框架】VUE ElementUI 离线文档 可不联网打开 Element - The worlds most popular Vue UI framework Element - The worlds most popular Vue UI framework 离线文档下载地址 https://download.csdn.net/download/G971005287W/89742895 文档制作 第一步: 克隆源代码 …

opencv使用videocapture打开视频时,依赖opencv_ffmpeg***.dll,默认必须放到执行目录,自定义目录需要重新编译opencv库

1. 找到modules下opencv_highgui模块的cap_ffmpeg.cpp 2. 找到加载opencv_ffmpeg的接口, 修改接口内opencv_ffmpeg的路径即可.

TCP/IP网络编程概念及Java实现TCP/IP通讯Demo

背景 在当今数字化的世界中&#xff0c;网络通信是连接各种设备和系统的关键。TCP/IP协议作为互联网通信的基石&#xff0c;被广泛应用于各种网络场景。了解TCP/IP网络编程的概念&#xff0c;并掌握如何在Java中实现TCP/IP通讯&#xff0c;对于开发人员来说是非常重要的。 TC…

通过Docker实现openGauss的快速容器化安装

容器安装 本章节主要介绍通过 Docker 安装 openGauss&#xff0c;方便 DevOps 用户的安装、配置和环境设置。 支持的架构和操作系统版本 x86-64 CentOS 7.6 ARM64 openEuler 20.03 LTS 配置准备 使用 buildDockerImage.sh 脚本构建 docker 镜像&#xff0c;buildDockerIm…

Oracle 11gR2打PSU补丁详细教程

1 说明 Oracle的PSU&#xff08;Patch Set Update&#xff09;补丁是Oracle公司为了其数据库产品定期发布的更新包&#xff0c;通常每季度发布一次。PSU包含了该季度内收集的一系列安全更新&#xff08;CPU&#xff1a;Critical Patch Update&#xff09;以及一些重要的错误修…

动手学深度学习(pytorch土堆)-04torchvision中数据集的使用

CIFAR10 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成&#xff0c;每个类有 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为 5 个训练批次和 1 个测试批次&#xff0c;每个批次有 10000 张图像。测试批次包含每个类中随机选择的 1000 张图像…

博物馆如何实现3D交互控制展示?

如果是想实现可交互控制的3D展示&#xff0c;推荐一下博维数孪&#xff08;Bowell&#xff09;&#xff0c;他家实现这样的需求非常非常简单&#xff0c;对3D美术人员来说完全没有任何门槛和难度&#xff0c;具体方式可以通过以下步骤进行&#xff1a; 1、准备3D模型&#xff…

CUDA-中值滤波算法

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 中值滤波是一种常用的图像处理方法&#xff0c;特别适用于去除图像中的脉冲噪声&#xff08;如椒盐噪声&#xff09;。…

如何根据企业的实际需求设计 cmdb系统

以下是根据企业实际需求设计配置管理数据库&#xff08;CMDB&#xff09;系统的步骤&#xff1a; 一、明确需求和目标 业务需求分析 与企业各部门沟通&#xff0c;了解他们对 IT 资源信息的需求。例如&#xff0c;运维团队可能需要准确的服务器配置信息以快速解决故障&#xff…

DBeaver 连接 mysql 报错:Public Key Retrieval is not allowed

前言 DBeaver 连接 mysql 报错&#xff1a;Public Key Retrieval is not allowed 遇到 "Public Key Retrieval is not allowed" 错误时&#xff0c;通常意味着你正在使用的身份验证方法需要加密连接&#xff0c;但是没有正确地配置客户端或服务器来支持这种加密。 解…