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...