美文网首页程序员
力扣 90 子集 II

力扣 90 子集 II

作者: zhaojinhui | 来源:发表于2020-11-14 02:32 被阅读0次

    题意:找出一个array的所有子集

    思路:

    1. 把array排序
    2. dfs找出所有的组合
    3. 每次dfs中遍历index之后的所有数子,把他们加入temp list,并对新的temp list进行dfs

    思想:DFS

    复杂度:时间O(n2),空间O(n2)

    class Solution {
        List<List<Integer>> res = new ArrayList();
        public List<List<Integer>> subsetsWithDup(int[] nums) {
            Arrays.sort(nums);
            get(nums, 0, new ArrayList());
            return res;
        }
        
        void get(int[] nums, int index, List<Integer> list) {
            res.add(list);
            for(int i=index;i<nums.length;i++) {
                // 去除重复的情况
                if(i > index && nums[i] == nums[i-1]) {
                    continue;
                }
                List<Integer> temp = new ArrayList(list);
                temp.add(nums[i]);
                get(nums, i+1, temp);
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:力扣 90 子集 II

        本文链接:https://www.haomeiwen.com/subject/zsnmbktx.html