首页 > 其他分享 >力扣---77. 组合

力扣---77. 组合

时间:2023-07-29 17:34:03浏览次数:35  
标签:--- 77 int res list dfs 力扣 new List

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

你可以按 任何顺序 返回答案。

 

示例 1:

输入:n = 4, k = 2
输出:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]

示例 2:

输入:n = 1, k = 1
输出:[[1]]

 

提示:

  • 1 <= n <= 20
  • 1 <= k <= n

 

回溯。

回溯最重要的,一个是终止条件,一个是还原。

class Solution {
    public List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> list = new ArrayList<>();
        dfs(list, n, k, res);
        return res;
    }
    private void dfs(List<Integer> list, int num, int k, List<List<Integer>> res) {
        if (list.size() == k) {
            res.add(new ArrayList<>(list));
            return;
        }
        for (int i = num; i > 0; i --) {
            list.add(i);
            dfs(list, i - 1, k, res);
            list.remove(list.size() - 1);
        }
    }
}

 优化优化,可以想到当剩余可以放的数字加上已有长度已经无法满足大于等于 k 后就可以退出递归。

class Solution {
    public List<List<Integer>> combine(int n, int k) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> list = new ArrayList<>();
        dfs(list, n, k, res);
        return res;
    }
    private void dfs(List<Integer> list, int num, int k, List<List<Integer>> res) {
        if (list.size() + num < k) {
            return;
        }
        if (list.size() == k) {
            res.add(new ArrayList<>(list));
            return;
        }
        for (int i = num; i > 0; i --) {
            list.add(i);
            dfs(list, i - 1, k, res);
            list.remove(list.size() - 1);
        }
    }
}

 

标签:---,77,int,res,list,dfs,力扣,new,List
From: https://www.cnblogs.com/allWu/p/17590163.html

相关文章

  • Apifox使用-接口调试
     正文:接口调试前后置操作响应和断言环境和变量 接口调试Apifox除了写接口文档以外,另一个重要的功能就是做接口调试相当于postman。当新建了一个接口文档并保存了以后,文档的后面会出现三个页签:修改文档、运行、高级Mock 在运行这里我们就可以进行接口的调试了,当然......
  • 无涯教程-jQuery - Sortable排序函数
    能够排序功能可与JqueryUI中的交互配合使用。此功能可在任何DOM元素上启用可排序功能。单击并将其拖动到列表中的新位置,其他项将调整以适合。默认情况下,可排序项目共享可拖动属性。Sortable-语法$(function(){$("#sortable").sortable();$("#sortable").disabl......
  • rola-ip跑路,有哪些稳定且好用的代理IP供应商推荐?
    从一开始有用户发现rola-ip的官网无法打开,到今天已经过去了8天之久。经过这么长时间的服务器无法连接、客服无回应,大概率是已经跑路了。类似知名代理公司突然关闭跑路的情况并不罕见,去年这个时候的911平台就是一个例子,这种情况给很多用户带来了困扰和损失。对于那些十分依赖代理服......
  • 语音合成技术2:FREEVC: TOWARDS HIGH-QUALITY TEXT-FREE ONE-SHOT VOICE CONVERSION
     摘要语音转换(VC)可以通过首先提取源内容信息和目标说话者信息,然后利用这些信息重构波形来实现。然而,目前的方法通常要么提取带有泄漏说话者信息的不完整内容信息,要么需要大量带标注的数据进行训练。此外,由于转换模型与声码器之间的不匹配,重构波形的质量可能会下降。在本文中,我......
  • AJAX--XMLHttpRequest对象
    一、了解XMLHttpRequest对象是AJAX的核心对象,发送对象以及接收服务器数据的返回XMLHttpRequest对象浏览器都内置了该对象,直接使用二、XMLHttpRequest对象的方法和属性1、创建XMLHttpRequest对象varxhr=newXMLHttpRequest()2、XMLHttpRequest对象的方法方法描述......
  • AJAX--ajax的get请求
    一、get请求前端代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>ajaxget请求<......
  • 洛谷 P3243 [HNOI2015] 菜肴制作 - toposort 需自己理解翻译题面
    P3243[HNOI2015]菜肴制作题目描述知名美食家小A被邀请至ATM大酒店,为其品评菜肴。ATM酒店为小A准备了\(n\)道菜肴,酒店按照为菜肴预估的质量从高到低给予\(1\)到\(n\)的顺序编号,预估质量最高的菜肴编号为\(1\)。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些......
  • Day06-26 内部类
    内部类内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了。1、成员内部类2、静态内部类3、局部内部类4、匿名内部类importcom.oop.demo10.Outer;​publicclassApplication{  publi......
  • PythonNote042---pymysql使用
      简单介绍pymysql的一些操作,增改删查增先建表,再写数据至表中除查询操作外,增改删都需要commit操作,具体原理看ref.1importpandasaspdimportpymysqlimporttimeimportwarningswarnings.filterwarnings("ignore")建表con=pymysql.connect(host='localhost',......
  • PysparkNote006---pycharm加载spark环境
    pycharm配置pyspark环境,本地执行pyspark代码spark安装、添加环境变量不提了File-Settings-Project-ProjectStructure-addcontentroot添加如下两个路径D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip                ......