這題的要求很簡單,給你乙個只包含不重複的整數的數列的情況下,寫乙個程式來返回所有可能組成的子集/冪集(power set),而且子集不帶重複。
看起來挺容易的,就是乙個個數字抽出來做組合,直到所有數字組合都迭代過就行了。問題是如何在**中實現這個邏輯?
given a set of distinct integers, nums, return all possible subsets (the power set).example:note: the solution set must not contain duplicate subsets.
input: nums = [1,2,3]雖然簡單,但也有點難到了我,所以就去了 leetcode discussion forum了解了一下,發現了乙個叫cascading的方法,大概原理就是 :output:
[[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
]
建立一張空列表(總列)迭代輸入數列,每次提取乙個元素然後用這元素迭代加入總列中每個元素,再替換成總列重複步驟2-3,直到所有元素都被迭代
最後的結果是一張有2n個子集的列表 (n為輸入數列的長度),因此也代表一共執行了2n次。
class
solution
:def
subsets
(self, nums: list[
int])-
> list[list[
int]]:
result =[[
]]for num in nums:
result +=
[current +
[num]
for current in result]
return result
112 路徑總和(leetcode) 7月7日
7月7日 leetcode no.112 路徑總和 相當於遍歷原樹的同時新建一顆形狀相同的 和樹 若和樹葉子結點的val等於目標sum,則返回成功,否則返回失敗。遞迴函式的作用是,輸入當前原樹中的某個節點和 和樹 中對應的節點,返回該節點下是否存在滿足要求的路徑 樹根到葉子結點 bool check...
LeetCode7反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。以字串方式思考...
LeetCode 7 反轉整數
給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123輸出 321示例 2 輸入 123輸出 321示例 3 輸入 120輸出 21注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 231,231 1 根據這個假設,如果反轉後的整數溢位,則返回 0。很簡單,就是不...