264. Ugly Number II

https://leetcode.com/problems/ugly-number-ii/

solution

  • heap: python小顶堆, 每次pop出来最小的

class Solution:
    def nthUglyNumber(self, n: int) -> int:
        heap = [1]
        start = 1
        s = set()

        for _ in range(n):
            while start in s:
                start = heapq.heappop(heap)
            s.add(start)
            for i in [2, 3, 5]:
                heapq.heappush(heap, i * start)
        return start

时间复杂度:O() 空间复杂度:O()

  • 动态规划

    • 从2、3、5三个序列中取最小,像一个三指针

    • 注意重复值,通过三个并列的if,如果if else则会导致重复

follow up

263. Ugly Number

时间复杂度:O() 空间复杂度:O()

1405. Longest Happy String

  • 括号生成都是生成类

  • 通过heap来回的pop, push过程中调整结果的一类题目

Last updated