《劍指Offer(第二版)》面試題49 醜數

2021-10-03 09:42:47 字數 890 閱讀 3368

我們把只包含因子 2、3 和 5 的數稱作醜數(ugly number)。求按從小到大的順序的第 n 個醜數。

示例:輸入: n = 10

輸出: 12

解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個醜數。

說明:  

1 是醜數。

n 不超過1690。

class solution:

def nthuglynumber(self, n: int) -> int:

p2, p3, p5 = 0, 0, 0

dp = [1]

for i in range(1, n):

if dp[p2]*2 == dp[i]:

p2 += 1

if dp[p3]*3 == dp[i]:

p3 += 1

if dp[p5]*5 == dp[i]:

p5 += 1

return dp[n-1]

class solution:

def nthuglynumber(self, n: int) -> int:

l = set()

flag = set()

flag.add(1)

while len(l) < 4*n:

l = l.union(flag)

j = set()

for i in flag:

j.add(2*i)

j.add(3*i)

j.add(5*i)

flag = j

result = list(l)

result.sort()

return result[n-1]

劍指offer第二版 面試題6(java)

面試題6 從尾到頭列印鍊錶 題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值 鍊錶的結點定義如下 public class listnode 注意 面試中,如果打算修改輸入的資料,最好先問好是否資料是允許修改的 思路 1.遍歷順序從頭到尾,列印順序從尾到頭,第乙個結點最開始被訪問,但是最...

劍指offer第二版 面試題8 java

題目描述 給定乙個二叉樹和其中的乙個結點,請找出中序遍歷順序的下乙個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標 分析 情況 一 有右子樹,這時只需要把其右孩子作為下乙個遍歷的 並不是要找的 節點,然後沿著該節點的左子樹 如果有的話 出發,直到遇到葉子節點,那麼該葉子節...

劍指offer第二版 面試題9(java)

面試題9 用兩個棧實現佇列 題目描述 方法 兩個棧 stack1 stack2 插入時,直接放入stack1 刪除時,直接彈出pop2中的物件 如果pop2為空,則先將pop1中的物件放入stack2中,再從stack2裡pop第乙個 如 依次放入stack1中1 2 3,在彈出並放入stack2中...