加载中...
264-丑数 II(Ugly Number II)
发表于:2021-12-03 | 分类: 中等
字数统计: 202 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/ugly-number-ii

英文原文

An ugly number is a positive integer whose prime factors are limited to 2, 3, and 5.

Given an integer n, return the nth ugly number.

 

Example 1:

Input: n = 10
Output: 12
Explanation: [1, 2, 3, 4, 5, 6, 8, 9, 10, 12] is the sequence of the first 10 ugly numbers.

Example 2:

Input: n = 1
Output: 1
Explanation: 1 has no prime factors, therefore all of its prime factors are limited to 2, 3, and 5.

 

Constraints:

  • 1 <= n <= 1690

中文题目

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

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

 

示例 1:

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

示例 2:

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

 

提示:

  • 1 <= n <= 1690

通过代码

高赞题解

官方题解里提到的三个指针p2,p3,p5,但是没有说明其含义,实际上pi的含义是有资格同i相乘的最小丑数的位置。这里资格指的是:如果一个丑数nums[pi]通过乘以i可以得到下一个丑数,那么这个丑数nums[pi]就永远失去了同i相乘的资格(没有必要再乘了),我们把pi++让nums[pi]指向下一个丑数即可。

不懂的话举例说明:

一开始,丑数只有{1},1可以同2,3,5相乘,取最小的1×2=2添加到丑数序列中。

现在丑数中有{1,2},在上一步中,1已经同2相乘过了,所以今后没必要再比较1×2了,我们说1失去了同2相乘的资格

现在1有与3,5相乘的资格,2有与2,3,5相乘的资格,但是2×3和2×5是没必要比较的,因为有比它更小的1可以同3,5相乘,所以我们只需要比较1×3,1×5,2×2。

依此类推,每次我们都分别比较有资格同2,3,5相乘的最小丑数,选择最小的那个作为下一个丑数,假设选择到的这个丑数是同i(i=2,3,5)相乘得到的,所以它失去了同i相乘的资格,把对应的pi++,让pi指向下一个丑数即可。

统计信息

通过次数 提交次数 AC比率
105676 182189 58.0%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言

相似题目

题目 难度
合并K个升序链表 困难
计数质数 中等
丑数 简单
完全平方数 中等
超级丑数 中等
上一篇:
263-丑数(Ugly Number)
下一篇:
268-丢失的数字(Missing Number)
本文目录
本文目录