• 【每日一题-leetcode】78.子集


    78.子集

    1. 子集

    难度中等549

    给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

    说明:解集不能包含重复的子集。

    示例:

    输入: nums = [1,2,3]
    输出:
    [
      [3],
      [1],
      [2],
      [1,2,3],
      [1,3],
      [2,3],
      [1,2],
      []
    ]
    

    回溯

    public List<List<Integer>> subsets(int[] nums) {
                List<List<Integer>> result = new ArrayList<>();
                //1.终止条件
                if(nums == null)    return result;
                //2.递归
                dfs(result,nums,new ArrayList<>(),0);
                return result;
            }
        
            //回溯算法
            private void dfs(List<List<Integer>> result,int [] nums,List<Integer> subResult,int index){
                //1.终止条件
                if(index == nums.length){
                    result.add(new ArrayList<Integer>(subResult));
                    return;
                }
                //2.not pick the number at this index 
                dfs(result,nums,subResult,index+1);
                //3.add
                subResult.add(nums[index]);
                //4. pick the number at this index 
                dfs(result,nums,subResult,index+1);
                //5.撤销
                subResult.remove(subResult.size()-1);
                
            }
    
  • 相关阅读:
    js中的异常处理
    CSS3之box-sizing属性
    AJAX
    NaN与Null与undefiined的关系
    跳转语句之continue与break
    npm火速上手
    程序里面的‘脑筋急转弯’
    css伪元素::before与::after
    常用正则表达式、JS中的正则以及ES6的扩展
    git
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860610.html
Copyright © 2020-2023  润新知