zoukankan      html  css  js  c++  java
  • Leetcode题目78.子集(回溯-中等)

    题目描述:

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

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

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

    题目解析:回溯的过程是执行一次深度优先遍历,一条路走到底,走不通的时候,返回回来,继续执行,一直这样下去,直到回到起点。

    代码实现:注意空集也是集合的子集

    将结果集扩大操作放在循环里面

     public static List<List<Integer>> subsets(int[] nums) {
    
            List<List<Integer>> res = new ArrayList<>();
            return backTrace(0, nums, res, new ArrayList<>());
        }
    
        private static List<List<Integer>> backTrace(int i, int[] nums, List<List<Integer>> res, ArrayList<Integer> tmp) {
    
            if (tmp.size() == 0) {
                res.add(new ArrayList<>(tmp));
            }
            for (int j = i; j < nums.length; j++) {
                tmp.add(nums[j]);
                res.add(new ArrayList<>(tmp));
                backTrace(j + 1, nums, res, tmp);
                //递归结束,恢复状态
                tmp.remove(tmp.size() - 1);
            }
            return res;
        }

    将结果集新增放在循环外面

      class Solution {
            public static List<List<Integer>> subsets(int[] nums) {
            List<List<Integer>> res = new ArrayList<>();
            backtrack(0, nums, res, new ArrayList<>());
            return res;
    
        }
    
        private static void backtrack(int i, int[] nums, List<List<Integer>> res, ArrayList<Integer> tmp) {
            res.add(new ArrayList<>(tmp));
            for (int j = i; j < nums.length; j++) {
                tmp.add(nums[j]);
                backtrack(j + 1, nums, res, tmp);
                tmp.remove(tmp.size() - 1);
            }
        }
    }
  • 相关阅读:
    JavaScript----特效代码
    坑!vue.js在ios9中失效
    MySQL的ibdata1文件占用过大
    Ubuntu搭建Gitlab服务器
    Logstash+Kibana部署配置
    Kafka+Zookeeper集群搭建
    ES5.0集群搭建
    Kibana使用高德地图
    Zabbix安装客户端agent(windows和Centos7)
    Centos/Rhel7部署Zabbix监控(部署篇之服务器篇)
  • 原文地址:https://www.cnblogs.com/ysw-go/p/11815058.html
Copyright © 2011-2022 走看看