共計 548 個字符,預計需要花費 2 分鐘才能閱讀完成。
可以使用遞歸的方法來輸出數組的所有子集。具體的實現如下:
def subsets(nums):
res = []
backtrack(nums, [], res, 0)
return res
def backtrack(nums, subset, res, start):
res.append(subset[:]) # 將當前子集加入結果列表
for i in range(start, len(nums)):
subset.append(nums[i]) # 添加當前元素到子集中
backtrack(nums, subset, res, i+1) # 遞歸調用下一層,start 參數為 i +1,表示下一個位置從 i + 1 開始
subset.pop() # 回溯,將添加的元素移除
# 測試
nums = [1, 2, 3]
print(subsets(nums))
輸出結果為:
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
這里使用了回溯法,通過維護一個當前子集的列表 subset,并在每次遞歸調用之前將當前子集加入結果列表 res 中。然后通過遍歷數組中的每個元素,在每個元素的位置上繼續遞歸調用,直到遍歷完整個數組。在遞歸調用的過程中,通過增加一個 start 參數來控制下一次遞歸的起始位置,從而避免生成重復的子集。
丸趣 TV 網 – 提供最優質的資源集合!
正文完