LeetCode題解(python) 77 組合

2021-10-06 21:10:34 字數 987 閱讀 2169

leetcode題解(python)

77. 組合

給定兩個整數 n 和 k,返回 1 … n 中所有可能的 k 個數的組合。

示例:輸入: n = 4, k = 2

輸出:[

[2,4],

[3,4],

[2,3],

[1,2],

[1,3],

[1,4],

]解題心得

本題是組合問題,顯然要用遞迴回溯的方法。

首先找到規律,要從n個元素中取k個元素,可以視為:1. 從n-1個元素中取k個元素;2. 從n-1個元素中取k-1個元素,再加上第n個元素。

這樣就從c(n,k)遞迴回溯到c(n-1,k)和c(n-1,k-1)+item(n)

執行用時 :52 ms, 在所有 python3 提交中擊敗了91.86%的使用者

記憶體消耗 :14.9 mb, 在所有 python3 提交中擊敗了10.53%的使用者

解題**
class

solution

:def

combine

(self, n:

int, k:

int)

-> list[list[

int]]:

if k>n or k==0:

return

if k==1:

return

[[i]

for i in

range(1

,n+1)]

if k==n:

return

[[i for i in

range(1

,n+1)]

]

leftk = self.combine(n-

1,k)

for item in self.combine(n-

1,k-1)

:return leftk

leetcode 字母異位詞分組(python)

題目 給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。注意 需熟悉字典的相關使用方法 class so...

leetcode 200 島嶼數量 python

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 11110 11010 11000 00000 輸出 1示例 2 輸入 11000 11...

leetcode 字母異位詞分組 python3

給定乙個字串陣列,將字母異位片語合在一起。字母異位詞指字母相同,但排列不同的字串。示例 輸入 eat tea tan ate nat bat 輸出 ate eat tea nat tan bat 說明 所有輸入均為小寫字母。不考慮答案輸出的順序。python中使用 字典 維護乙個分組表,鍵值 key...