2022/01/[路飞][LeetCode]264_丑数 II/index

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起!

题目地址

题目

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

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= n <= 1690

解题思路

  • 1开始,由于1是特殊的丑数
  • 因为丑数是只包含235为因数,因此后续的丑数必然是由前面的丑数*2/3/5得到
  • 我们维护三个指针分别计数,如果指针位置的丑数*指针的值等于当前的丑数,该指针加一

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var nthUglyNumber = function(n) {
let a=0,b=0,c=0
let ret= [1]
for(let i=0;i<n;i++){
const n2 =ret[a]*2
const n3 =ret[b]*3
const n5 =ret[c]*5
const min = Math.min(n2,n3,n5)
ret.push(min)
if(min==n2) a++
if(min==n3) b++
if(min==n5) c++

}
return ret[n-1]
};

如有任何问题或建议,欢迎留言讨论!

文章作者: Joker
文章链接: https://qytayh.github.io/2022/01/[%E8%B7%AF%E9%A3%9E][LeetCode]264_%E4%B8%91%E6%95%B0%20II/index/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker's Blog