leetcode77. 组合(回溯算法-java)

news/2025/1/12 6:10:04/

组合

  • leetcode77. 组合
    • 题目描述
    • 解题思路
    • 代码演示
  • 递归专题

leetcode77. 组合

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/combinations

题目描述

给定两个整数 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

解题思路

这题就是找出固定长度的子集。和leetcode78子集相比,其实是子集的一部分。
nums = [1,2,3] 为例,刚才让你求所有子集,就是把所有节点的值都收集起来;现在你只需要把第 2 层(根节点视为第 0 层)的节点收集起来,就是大小为 2 的所有组合:
在这里插入图片描述
所以是子集的一部分,我们还可以用回溯算法的框架去解决。
result = []
def process(选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择

代码演示

class Solution {//答案LinkedList<List<Integer>> ans = new LinkedList<>();//每次递归时做出的选择LinkedList<Integer> track = new LinkedList<>();public List<List<Integer>> combine(int n, int k) {process(1,n,k);return ans;}/*** 回溯算法 递归* start 每次起始位置*/public void process(int start,int n,int k){//base case 越界时 如果长度不对,直接返回不是我们要的答案if(start > n && k != track.size() ){return ;}//长度相等时,是需要的答案,加入到答案里if(k == track.size()){ans.add(new LinkedList<>(track));return;}//回溯算法可以做出选择的列表for(int i = start;i <= n ;i++){//做出选择track.addLast(i);//递归 去下一个位置 继续选择process(i + 1,n,k);//回溯,撤销选择track.removeLast();}}
}

递归专题

leetcode198. 打家劫舍

整数拆分问题

leetcode213. 打家劫舍 II

leetcode198. 打家劫舍

leetcode174. 地下城游戏

打败怪兽的概率

leetcode688. 骑士在棋盘上的概率


http://www.ppmy.cn/news/488861.html

相关文章

JAVA NIO概念详解

Java NIO&#xff08;New I/O&#xff09;是Java平台提供的一组用于高效处理I/O操作的API。相较于传统的Java I/O&#xff08;java.io&#xff09;API&#xff0c;Java NIO提供了更加灵活、高效的非阻塞I/O操作方式。主要一些概念如下。 缓冲区&#xff08;Buffer&#xff09;…

nvidia 桌面录屏

好像nvidia的桌面录屏在后续版本中被禁止了,只能在支持的游戏中录屏,今天随便研究了下,在GeForce Experience 目录下比如我的是:C:\Program Files\NVIDIA Corporation,在该目录下搜索 .exe,找到 nvcontainer.exe ,然后点击运行,以后电脑就可以随时启动录屏了.

英伟达 gsync demo NVIDIA 钟摆测试

英伟达 gsync demo NVIDIA 钟摆测试 不知道为什么网上没有共享资源的帖子 共享一下网址 顺带记录作用 https://www.nvidia.com/coolstuff/demos#!/ 进去就第一个就是钟摆测试&#xff0c;还有好多英伟达的其他demo 觉得方便的可以点赞支持一下

N卡自带录屏软件geforce 双屏录制问题

目前查到的资料是录制的是显卡接口从左到右第一个接上显示器的那个屏幕&#xff0c;所以如果想录制某一个屏幕又设置不了时请这样做&#xff1a;在主机上拔了其他屏蔽的输出线&#xff0c;那么就可以只录制你想录的屏幕了_

asic面试题目 英伟达_NVIDIA(英伟达)面试经验

面试过程&#xff1a; 1. 为什么要引入右值引用&#xff0c;const的左值引用不一样可以bind到右值吗&#xff1f;或者为啥不直接用左值引用就可以了。右值的概念是C98里就存在了&#xff0c;C11新引入的是右值引用&#xff0c;这个我没有回答准确。 2. std:move的实现机制&…

良心录屏工具Captura

良心录屏工具Captura 介绍 这个录制视频有声音&#xff0c;主要面向电脑视频录制&#xff0c;摄像头录制。captura录制视频默认不带声音&#xff0c;如果需要声音&#xff0c;软件界面有下拉列表选项开启的。 下载地址 链接&#xff1a;https://pan.baidu.com/s/1UMO4pp2ys…

英伟达Xavier调试记录_202209

串口通信。和网口通信相比&#xff0c;不能一次返回接口协议定义的完整包。需要逐字节解析才能凑齐一包通信协议格式包。为防错&#xff0c;通常采用固定标识、长度校验、校验和的方式保证能够区分开数据。线程调度。Linux线程调度分为实时和分时调度&#xff0c;实时包含SCHED…

centos6安装英伟达显卡绿屏 报错

centos安装排错&#xff0c;建议对版本没有要求的尽量安装比较新的版本&#xff0c;如果硬件比系统新&#xff0c;会出现各种问题&#xff0c; 最近centos6.8安装英伟达驱动&#xff0c;被nouveau折磨了好久&#xff0c;无法屏蔽掉&#xff0c;导致绿屏卡死&#xff0c;安装网上…