Leetcode 78. 子集

78. 子集 - 力扣(LeetCode)

 

 

 

思路 回溯法 

 

 

 

使用回溯模板

1. 无返回值的递归函数

2.通常命名为backtracking

3. 参数依据题意来决定

4. if 终止条件{

  收集结果

  return

}

for (集合内元素集){

  处理节点(将节点存到结果数组中)

  递归函数

  进行回溯操作

}

return 

 

最终实现

var res [][]int

func subsets(nums []int) [][]int {
	res = make([][]int, 0)
	backTracking([]int{}, nums, 0)
	return res
}

func backTracking(temp []int, nums []int, start int) {
	tmp := make([]int, len(temp))
	copy(tmp, temp)
	res = append(res, tmp)
	for i := start; i < len(nums); i++ {
		temp = append(temp, nums[i])
		backTracking(temp, nums, i+1)
		temp = temp[:len(temp)-1]
	}
}

  

  

posted @ 2022-05-09 19:32  SoutherLea  阅读(12)  评论(0编辑  收藏  举报