跳转至

剑指 Offer 49. 丑数#

问题描述#

我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。

 

示例:

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

说明:  

  1. 1 是丑数。
  2. n 不超过1690。

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

解题思路#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
nums = [1]
i = j = k = 0
for _ in range(1,1691):
    a, b, c = 2 * nums[i], 3 * nums[j], 5 * nums[k]
    _min = min(a, b, c)
    nums.append(_min)
    if _min == a:
        i += 1
    if _min == b:
        j += 1
    if _min == c:
        k += 1

class Solution:
    def nthUglyNumber(self, n: int) -> int:
        return nums[n - 1]
返回顶部

在手机上阅读