LeetCode【78】子集

题目:
LeetCode【78】子集_第1张图片
思路:https://zhuanlan.zhihu.com/p/308398438

需要形成回溯问题的模板,然后套用模板编写代码。回溯问题三要素:
1、寻找递归函数参数
2、递归终止条件
3、循环体(单层搜索逻辑)

注:本题思路不熟练,需要重点复习。

代码:

// 找回溯,递归入参
// 找回溯,递归终止条件
// 找
public List<List<Integer>> result = new ArrayList<>();
public LinkedList<Integer> path = new LinkedList<>();

public List<List<Integer>> subsets(int[] nums) {
    backtracking(nums, 0);
    return result;
}


public void backtracking(int[] nums, int startIndex) {

    result.add(new ArrayList<>(path)); // 在回溯的时候,可能将path的引用改掉,所以这里一定要new Arrays,将结果保存且不被修改

    for (int i = startIndex; i < nums.length; i++) {
        path.add(nums[i]);
        backtracking(nums, i + 1);
        path.removeLast();
    }

}

你可能感兴趣的:(leetcode,算法,职场和发展)