当前位置: 首页 > article >正文

穷举vs暴搜vs深搜vs回溯vs剪枝专题一>子集

题目: 


两个方法本质就是决策树的画法不同

方法一解析: 


代码: 

class Solution {
    private List<List<Integer>> ret;//返回结果
    private List<Integer> path;//记录路径,注意返回现场
    public List<List<Integer>> subsets(int[] nums) {
        path = new ArrayList<>();
        ret = new ArrayList<>();
        dfs(nums,0);
        return ret;
    }


    //i表示选择到了那一层
    private void dfs(int[] nums, int indx){
        //递归出口
        if(indx == nums.length){
            ret.add(new ArrayList<>(path));
            return;
        }

        //选某个元素
        path.add(nums[indx]);
        dfs(nums,indx+1);
        path.remove(path.size()-1);//回复现场


        //不选某个元素
        dfs(nums,indx+1);
    }
}

方法二解析:  


代码: 

 private List<List<Integer>> ret;//返回结果
    private List<Integer> path;//记录路径
    public List<List<Integer>> subsets(int[] nums) {
        path = new ArrayList<>();
        ret = new ArrayList<>();
        dfs(nums,0);
        return ret;
    }

    private void dfs(int[] nums, int pos){
        ret.add(new ArrayList<>(path));
        for(int i = pos; i < nums.length; i++){
            path.add(nums[i]);
            //每一层只能往选过的元素,再往选
            dfs(nums,i+1);
            path.remove(path.size()-1);//回复现场
        }
    }

http://www.kler.cn/a/442976.html

相关文章:

  • jQuery lightbox插件ViewBox
  • Leetcode打卡:形成目标字符串需要的最少字符串数I
  • Vue.js前端框架教程7:Vue计算属性和moment.js
  • XSLT 编辑 XML
  • Java类
  • 论文笔记-KDD2024-TransRec
  • 【Python爬虫系列】_032.Scrapy_全站爬取
  • 二百七十九、ClickHouse——用Kettle对DWD层清洗数据进行增量补全
  • FastAPI 的进阶应用与扩展技术:异步编程与协程、websocket、celery
  • Invalid bound statement (not found) 错误解决
  • BTP Integration Suite CPI Apache Camel
  • 太速科技-501-基于TMS320C6670的软件无线电核心板
  • 分布式事务seata(AT)与nacos整合-笔记2
  • Vue入门到精通:运行环境
  • CTFHUB 信息泄露 -phpinfo
  • Scratch教学作品 | 圣诞节平台游戏——在节日中挑战冒险,收集礼物吧! ✨
  • 基于Spring Boot的社区药房系统
  • STM32坑分享——擦写单片机内部Flash时影响串口通信
  • 在Linux系统中, 查询mysql
  • Linux高性能服务器编程 | 读书笔记 | 10. 高性能I/O框架库Libevent