zoukankan      html  css  js  c++  java
  • [leetCode]78. 子集

    [leetCode]78. 子集
    16/100
    保存草稿
    发布文章
    renweiyi1487
    未选择任何文件

    题目

    链接:https://leetcode-cn.com/problems/subsets

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

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

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

    回溯

    回溯法可以将该问题抽象成一棵树,与其他问题(只需添加叶子节点不同)该题需要添加树上的所有节点
    在这里插入图片描述

    class Solution {
    
        private List<List<Integer>> result = new ArrayList<>();
    
        private List<Integer> path = new ArrayList<>();
    
        public List<List<Integer>> subsets(int[] nums) {
            backTracking(nums, 0);
            return result;
        }
    
        private void backTracking(int[] nums, int startIndex) {
            // 收集子集
            result.add(new ArrayList<>(path));
            if (startIndex == nums.length) {
                return;
            }
            for (int i = startIndex; i < nums.length; i++) {
                path.add(nums[i]);
                
                backTracking(nums, i + 1);
                path.remove(path.size() - 1);
            }
        }
    }
    

    题目
    链接:https://leetcode-cn.com/problems/subsets

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

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

    示例:

    输入: nums = [1,2,3]
    输出:
    [
    [3],
    [1],
    [2],
    [1,2,3],
    [1,3],
    [2,3],
    [1,2],
    []
    ]
    回溯
    回溯法可以将该问题抽象成一棵树,与其他问题(只需添加叶子节点不同)该题需要添加树上的所有节点
    在这里插入图片描述

    class Solution {

    private List<List<Integer>> result = new ArrayList<>();
    
    private List<Integer> path = new ArrayList<>();
    
    public List<List<Integer>> subsets(int[] nums) {
        backTracking(nums, 0);
        return result;
    }
    
    private void backTracking(int[] nums, int startIndex) {
        // 收集子集
        result.add(new ArrayList<>(path));
        if (startIndex == nums.length) {
            return;
        }
        for (int i = startIndex; i < nums.length; i++) {
            path.add(nums[i]);
            
            backTracking(nums, i + 1);
            path.remove(path.size() - 1);
        }
    }
    

    }
    Markdown 869 字数 56 行数 当前行 55, 当前列 0 文章已保存19:17:23HTML 627 字数 39 段落

  • 相关阅读:
    NB-IOT终端应用场景
    开关量是什么信号,模拟量是什么信号
    模拟量设备为什么都用4~20mA传输信号
    物联网三大关键技术
    4~20mA.DC(1~5 V.DC)信号制的优点
    Lora在局域网中的优势
    NB-IoT终端在不同工作状态下的分析
    4G模块的串行AT命令发送未接收返回如何处理
    前端性能优化
    Tab:不可思议的CSS光标下划线跟随效果
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13938534.html
Copyright © 2011-2022 走看看