萤火小屋

优律的知识库

  • 首页
  • 归档
  • 分类
  • 标签
  • 留言
  • 关于

  • 搜索
消息队列 RabbitMQ Redis 双指针 力扣 动态代理 Git YAML SpringBoot SpringMVC 回溯算法 分治算法 归并排序 快排 手撕 事务 MySQL索引 MySQL 小技巧 Spring Framework Spring 动态规划 Linux Android 贪心算法 操作系统 进程调度模拟 IPv6 数据库 计算机组成原理 计算机基础 栈 Java 静态路由 路由器 交换机 数字通信 网络工程 计算机网络 Web http 大学学习技巧 程序设计 算法

力扣第78题-子集

发表于 2023-06-28 | 分类于 力扣刷题 | 0 | 阅读次数 11

题目
题目链接

题解

import java.util.ArrayList;
import java.util.List;

class Solution {

    public List<List<Integer>> subsets(int[] nums) {
        if (nums == null || nums.length == 0) {
            return new ArrayList<>(0);
        }
        // 动态答案解
        List<Integer> t = new ArrayList<Integer>(nums.length);
        // 答案集合
        List<List<Integer>> ans = new ArrayList<>();
        dfs(0, nums, t, ans);
        return ans;
    }

    /**
     * 递归回溯
     * @param cur 指针
     * @param nums 传入数组
     * @param t 动态答案解(动态调整此数组获得每一步答案)
     * @param ans 答案集合
     */
    public void dfs(int cur, int[] nums, List<Integer> t, List<List<Integer>> ans) {
        // 叶子节点 记录答案
        if (cur == nums.length) {
            ans.add(new ArrayList<Integer>(t));
            return;
        }
        // 前序遍历节点操作
        // 向当前答案中添加元素
        t.add(nums[cur]);
        // 向左子树延申
        dfs(cur + 1, nums, t, ans);
        // 中序遍历节点操作
        // 该答案已经被记录,删除最后一个元素,本质上跳过了当前cur下标的元素
        t.remove(t.size() - 1);
        // 向右子树延申
        dfs(cur + 1, nums, t, ans);
    }

}
# 算法 # 程序设计 # 回溯算法 # 力扣
力扣第76题-最小覆盖子串
力扣第79题-单词搜索
  • 文章目录
  • 站点概览
优律

优律

优律的知识库

125 日志
20 分类
44 标签
E-mail Twitter Instagram
Links
  • CZLisyx - 浮生志
  • Vedfolnir
0%
© 2019 — 2023 萤火小屋——优律的博客网站
网站已勉强运行 
Halo博客系统技术支持