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
时间复杂度:O() 空间复杂度:O()
与括号生成都是生成类
通过heap来回的pop, push过程中调整结果的一类题目
Last updated