力扣练习之子集

我爱海鲸 2023-03-19 23:21:20 力扣、中级算法

简介中级算法、回溯算法

原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xv67o6/

解法一:

class Solution {
    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> list = new ArrayList<>(); 
        backstrack(list,new ArrayList<Integer>(),nums,0);
        return list;
    }

    private void backstrack(List<List<Integer>> list,List<Integer> tmpList,int[] nums,int start) {
        list.add(new ArrayList<>(tmpList));
        for (int i = start ; i < nums.length; i++) {
            tmpList.add(nums[i]);
            backstrack(list,tmpList,nums,i + 1);
            tmpList.remove(tmpList.size()-1);
        }
    }
}

思路:回溯法,我们把排列的子集想象成一颗n差树,前序遍历,每次遍历都需要进行回溯

你好:我的2025