Python 子集
假設我們有一組數字;我們需要生成該集合的所有可能的子集。這也被稱為冪集。因此,如果集合像 [1,2,3],則冪集將是 [[], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3]]
讓我們看看步驟 -
- 我們將使用遞迴方法來解決這個問題。因此,如果遞迴方法名稱稱為 solve(),並且它接受數字集 (nums)、臨時集 (temp)、res 和索引
- solve() 函式的工作方式如下 -
- 如果 index = nums 的長度,則建立一個與 temp 相同的列表,並將其插入 res 並返回
- temp[index] := 0
- solve(nums, temp, res, index + 1)
- temp[index] := 1
- solve(nums, temp, res, index + 1)
- 主函式如下 -
- res := 一個空列表
- 建立一個與 nums 大小相同的 temp 列表,並將其填充為 0
- 呼叫 solve(nums, temp, res, 0)
- main_res := 一個空列表
- 對於 temp_res 中的所有列表
- temp := 空列表
- 對於 i := 0 到列表的長度
- 如果 lists[i] = 1,則將 nums[i] 插入 temp
- 將 temp 插入 main_res
- 返回 main res
讓我們看看以下實現以獲得更好的理解 -
示例
class Solution(object): def subsets(self, nums): temp_result = [] self.subsets_util(nums,[0 for i in range(len(nums))],temp_result,0) main_result = [] for lists in temp_result: temp = [] for i in range(len(lists)): if lists[i] == 1: temp.append(nums[i]) main_result.append(temp) return main_result def subsets_util(self,nums,temp,result,index): if index == len(nums): result.append([i for i in temp]) #print(temp) return temp[index] = 0 self.subsets_util(nums,temp,result,index+1) temp[index] = 1 self.subsets_util(nums, temp, result,index + 1) ob1 = Solution() print(ob1.subsets([1,2,3,4]))
輸入
[1,2,3,4]
輸出
[[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP