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

Leetcode 77:组合

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

未剪枝版:

public List<List<Integer>> combine(int n, int k) {backtracking(n,k,1);System.out.println(res);return res;}public void backtracking(int n,int k,int start){if(path.size()==k){//直接 res.add(path),会导致 res 中保存的是 path 的引用,而不是它的当前状态的副本。// 这样做的话,当 path 发生变化时,res 中所有保存的路径也会跟着改变。res.add(new LinkedList<>(path));return;}for(int i=start;i<=n;i++){path.add(i);backtracking(n,k,i+1);path.removeLast();  //回溯,删除path中最后一个元素}}

剪枝版:

剪枝条件: 剩余的元素大于 还需要的元素

剩余元素:n-i+1

还需元素:k-path.size()

n-i+1>=k-path.size(), 可得 i<=n-(k-path.size)+1

public void backtracking(int n,int k,int start){if(path.size()==k){//直接 res.add(path),会导致 res 中保存的是 path 的引用,而不是它的当前状态的副本。// 这样做的话,当 path 发生变化时,res 中所有保存的路径也会跟着改变。res.add(new LinkedList<>(path));return;}//剪枝条件: 剩余的元素大于 还需要的元素//剩余元素:n-i, 还需元素个数:k-path.size()//n-i>=k-path.size(),可得 i<=n-(k-path.size)for(int i=start;i<=n-(k-path.size());i++){path.add(i);backtracking(n,k,i+1);path.removeLast();  //回溯,删除path中最后一个元素}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 无人机运营合格证及无人机驾驶员合格证(AOPA)技术详解
  • C# Application.DoEvents()的作用
  • Day05-03-Nexus仓库
  • 物联网数据解析实战:掌握CJSON库核心函数,精准处理JSON数据
  • Ubuntu 22.04远程自动登录桌面环境
  • I2C接口+高度集成的电源管理芯片(PMIC)-iML1942
  • UE4_材质_使用彩色半透明阴影
  • 基于图像处理的滑块验证码匹配技术
  • html5中的iframe
  • redis布隆过滤器原理及应用场景
  • Redis Stream:实时数据流的处理与存储
  • 论文创新的几种思路
  • lodash中flush的使用(debounce、throttle)
  • WGAN(Wassertein GAN)
  • Mysql面试合集
  • hexo+github搭建个人博客
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【附node操作实例】redis简明入门系列—字符串类型
  • express + mock 让前后台并行开发
  • Java多态
  • Java方法详解
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Puppeteer:浏览器控制器
  • vue的全局变量和全局拦截请求器
  • Vue全家桶实现一个Web App
  • 基于游标的分页接口实现
  • 三栏布局总结
  • 数据科学 第 3 章 11 字符串处理
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 写代码的正确姿势
  • 一个JAVA程序员成长之路分享
  • 译米田引理
  • 用mpvue开发微信小程序
  • 智能合约开发环境搭建及Hello World合约
  • No resource identifier found for attribute,RxJava之zip操作符
  • kubernetes资源对象--ingress
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • Spring Batch JSON 支持
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​如何防止网络攻击?
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)Sql Server 保留几位小数的两种做法
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • ***利用Ms05002溢出找“肉鸡
  • .axf 转化 .bin文件 的方法
  • .bashrc在哪里,alias妙用
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别