回溯算法心得

2023-06-20  本文已影响0人  Bigglesworth
class Solution {

    List<List<Integer>> res = new LinkedList<>();
    LinkedList<Integer> track = new LinkedList<>();

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

    void backtrack(int[] nums, int start){
        if (start == nums.length){
        res.add(new LinkedList(track));
        return;
        }
          // 将当前树枝放入 list
            track.addLast(nums[start]);  
          // 进入下一步,放入当前树枝+1 
            backtrack(nums,start+1);
          // 等到 if 条件满足,遍历到叶子节点,就会走到这一步,回退一步,
            track.removeLast();
          // 走当初没有选择的另一种可能,继续递归下去
            backtrack(nums,start+1);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读