zoukankan      html  css  js  c++  java
  • 子集

    Leetcode题目描述

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

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

    示例:

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

    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/subsets
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    回溯代码

    • 核心在于不能有重复的子集,以及可以存在空集。而且子集大小是不固定
    • 所以每次的循环开始位置或者结束位置都要与之前的不同,类似双循环。
    class Solution {
        public List<List<Integer>> subsets(int[] nums) {
            List<List<Integer>> res = new ArrayList<>();
            backtrack(0, nums, res, new ArrayList<Integer>());
            return res;
    
        }
    
        private 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);
            }
        }
    }
    
  • 相关阅读:
    Django路由系统
    修改数据库时区问题
    Django框架篇
    前端css
    前端html
    前端初识
    数据库3
    数据库2
    数据库1
    数据库初识
  • 原文地址:https://www.cnblogs.com/Di-iD/p/13784949.html
Copyright © 2011-2022 走看看