LC 子集
时间:2023.9.29
题目地址:子集
题目介绍
题目分析
经典回溯解题,套用回溯模板,找到几个条件。
代码
def backtrack(index, state, res):
# 如果当前状态不在结果集中,将其添加
if state not in res:
res.append(list(state))
# 递归终止条件,处理完所有元素
if index+1 > len(nums):
return
# 遍历剩余元素,生成所有可能的子集
for i in range(index, len(nums)):
state.append(nums[i]) # 将当前元素添加到状态中
backtrack(i + 1, state, res) # 递归处理下一个元素
state.pop() # 回溯,将当前元素从状态中移除
state = [] # 初始状态为空列表,表示空子集
res = [] # 用于存储所有子集的列表
backtrack(0, state, res) # 调用深度优先搜索函数
return res