1、题干

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

2、解题

方法一:(回溯算法)

这是一道类似全排列的问题,给定范围,给出要求,求出可能得所有组合,可以使用回溯算法求解。
回溯算法要点:
明确不变的量,明确本趟组装的临时变量,明确结果集合。递归处理;
递归的终止条件(一般是临时变量符合要求),添加结果集;非终止的情况下循环处理,先添加元素向后发起,之后在删除元素向前回溯。
套用上面的公式,代码示例如下。

代码示例:

public static List<List<Integer>> combine(int n, int k) {List<List<Integer>> result = new ArrayList<>();   // 结果集List<Integer> tempList = new ArrayList<>();   // 当前趟的组合int index = 1;    // 添加元素的位置goAndBack(n, k, tempList, index, result);    // 固定部分(n,k),临时可变部分(tempList,index),结果集(result)return result;}private static void goAndBack(int n, int k, List<Integer> tempList, int index, List<List<Integer>> result) {if (tempList.size() == k) {   // 递归终止条件result.add(new ArrayList<>(tempList));     // 注意tempList需要删除元素进行回溯处理,所用new ArrayList<>包裹处理。return;}for (int i = index; i <= n; i++) {        // 使用index为起始位置,防止添加相同的元素。// 临时部分处理后,递归向后处理tempList.add(i);   // 临时部分tempList添加元素goAndBack(n, k, tempList, i + 1, result);    // 下一个元素位置index从之后的i+1开始,防止添加重复元素 // 删除元素,回溯处理。删除最后的元素tempList.remove(tempList.size() - 1);}}

向阳前行,Dare To Be!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91533.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91533.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91533.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多人命题系统

目 录 摘 要 Abstract 1 系统概述 1.1 概述 1.2课题意义 1.3 主要内容 2 系统开发环境 2. 1 JAVA简介 2. .2 B/S架构 2.3 SSM三大框架 2.4访问数据库实现方法 2.5 系统对MySQL数据库的两种连接方式 3 需求分析 3.1技术可行性&#xff1a;技术背景…

UDP_千兆光通信(四)Tri Mode Ethernet MAC ip核

Tri Mode Ethernet MAC ip核使用与例程分析 一、 Tri Mode Ethernet MAC ip核功能 二、 Tri Mode Ethernet MAC ip核配置 数据传输速率 主要设置接口 帧滤波功能选择,以及流控选择 三、 Tri Mode Ethernet MAC ip核使用 3.1 ip核接口 3.2 ip核接口说明 3.2.1 tx_ifg_delay 3.2…

Linux网络:多路转接 epoll

Linux网络&#xff1a;多路转接 epoll一、epoll三个接口函数1、epoll_create2、epoll_ctl3、epoll_wait二、epoll的工作原理三、epoll的echo_server1、EpollServer类2、构造函数3、事件循环4、事件派发5、事件处理6、测试四、LT和ET模式1、LT2、ET五、项目代码一、epoll三个接口…

uniapp 微信小程序 列表点击分享 不同的信息

<button open-type"share" plain class"item share" click.stop"shareFn(item)"><text>分享</text> </button>import {onShareAppMessage} from dcloudio/uni-applet shareObj ref({})// 将点击后的分享设置信息 关键…

C# 匿名方法详解

C# 匿名方法详解 引言 在C#编程语言中,匿名方法是使用Lambda表达式创建的没有名称的方法。它们在LINQ查询、事件处理和其他场合中非常有用。本文将详细介绍C#匿名方法的基本概念、语法、使用场景以及优势。 匿名方法的概念 匿名方法是一种无需显式定义名称的方法。在C#中,…

SD卡简介与驱动开发

基本概念 存储卡有很多种类&#xff0c;CF卡、记忆棒、SD卡、XD卡、MMC卡、MS卡、TF卡、MicroSD卡等。平时最常见的有SD卡和MicroSD卡两种&#xff0c; SD卡和MicroSD只是两张卡的大小不同&#xff0c;规格版本是完全相同的&#xff0c;均由SD卡协会推出。 SD卡有不少规范&…

大数据平台数仓数湖hive之拉链表高效实现

对于缓慢变化的维度表&#xff0c;如客户表&#xff0c;员工表&#xff0c;为了不丢失历史数据&#xff0c;又不至于太浪费存储空间&#xff0c;我们采用拉链表实现。 实现过程如下&#xff1a; 1、采集初始数据&#xff1a; 1.1 从mysql导出数据到hdfs /data/dolphinschedu…

【VSCode】常用插件推荐(持续更新~)

以下的这些插件都有使用过&#xff0c;可取对自己编码有用的选择安装。&#x1f9e0; 智能补全 / 提示类插件 1. Auto Import在编码时选择有对应导入包的选项&#xff0c;自动为 JS/TS 文件中的使用项补全并添加 import 声明&#xff0c;极大提高开发效率。2. Iconify IntelliS…

ICML 2025 | 深度剖析时序 Transformer:为何有效,瓶颈何在?

本文介绍帝国理工学院等机构在 ICML 2025 发表的最新研究成果。该研究并未提出新模型&#xff0c;而是对现有时间序列 Transformer 模型进行了一次深刻的拷问——为何结构更简单的 Transformer&#xff08; PatchTST, iTransformer&#xff09;在各大基准测试中&#xff0c;反而…

AIBOX内置5G天线设计

AIBOX内置5G天线设计AIBOX的天线种类天线种类及数量&#xff1a;运营商5G天线*4&#xff0c;1.4G天线*2、wifi天线*1天线形式&#xff1a;内置PCB天线。天线安装方式&#xff1a;卡扣固定&#xff0c;安装至设备外壳内壁。RG-178同轴线或UFL1.37mm同轴线连接至主板&#xff0c;…

低通滤波器的原理以及作用

低通滤波器&#xff08;Low-Pass Filter, LPF&#xff09;是一种允许低频信号通过&#xff0c;同时衰减或阻止高频信号的电子电路或数字信号处理算法。其核心原理和作用如下&#xff1a;一、工作原理 1. 频率选择性- 低通滤波器基于频率对信号进行筛选&#xff0c;其传递函数在…

[AI Coding] 一.腾讯CodeBuddy IDE内测、安装及基本用法(国产AI IDE启航)

在人工智能迅猛发展的今天&#xff0c;AI Coding 正逐步改变传统编程范式。广义上&#xff0c;AI Coding 是指以大语言模型&#xff08;LLMs&#xff09;为核心驱动&#xff0c;借助自然语言理解能力&#xff0c;自动生成、补全、调试与解释代码的智能编程方式。它不仅显著降低…

《网安处罚裁量基准》码农合规指北 v1.0——if (违规) { 罚金++ } else { 合规运行 }

尊敬的审核&#xff1a; 本人文章《〈网安处罚裁量基准〉码农合规指北 v1.0——if (违规) { 罚金 } else { 合规运行 }》 1. 纯属技术交流&#xff0c;无任何违法内容 2. 所有法律引用均来自公开条文 3. 请依据《网络安全法》第12条“不得无故删除合法内容”处理 附&#xff1a…

机器学习——逻辑回归(LogisticRegression)实战案例:信用卡欺诈检测数据集

使用逻辑回归识别 信用卡欺诈行为&#xff1a;基于creditcard.csv的实战与评估分析 项目背景 在金融行业中&#xff0c;信用卡欺诈检测是一项关键任务。欺诈交易在整个交易中占比极低&#xff0c;导致数据极度不平衡。本案例通过经典数据集 creditcard.csv&#xff0c;构建逻辑…

Helm在Kubernetes中的应用部署指南与案例解析

在上一章节中&#xff0c;我们已经介绍了Helm的部署和基本使用方法。本章将通过实际案例&#xff0c;详细演示如何使用Helm在Kubernetes集群中部署应用。一、Helm 核心价值解析优势解决的问题类比传统方式应用模板化重复编写 YAML 文件手动编写 20 资源清单文件版本控制缺乏部署…

如何最简单、通俗地理解线性回归算法? 线性回归模型在非线性数据上拟合效果不佳,如何在保持模型简单性的同时改进拟合能力?

线性回归作为统计学与机器学习领域中最基础且最重要的算法之一&#xff0c;其应用广泛且深远。它不仅是回归分析的入门方法&#xff0c;更是后续复杂模型构建的重要理论基础。理解线性回归算法的本质&#xff0c;既有助于提升数据分析的能力&#xff0c;也能为掌握更复杂的机器…

蓝桥杯----超声波

&#xff08;一&#xff09;、超声波1、原理&#xff08;图 一&#xff09;发送信号阶段&#xff1a;单片机通过翻转发送的引脚P1^0&#xff0c;发送8个40MHZ的方波&#xff0c;此时开始计时。等待接收信号&#xff1a;通过单片机的接收引脚P1^1检测&#xff0c;未接收到信号时…

Java学习-运算符

1.在代码中&#xff0c;如果有小数参与计算&#xff0c;结果有可能不精确。2.整数参与计算&#xff0c;结果只能是整数。3.数字进行运算时&#xff0c;数据类型不一样不能运算&#xff0c;需要转成一样的&#xff0c;才能运算。&#xff08;1&#xff09;隐式转换&#xff08;自…

一句话指令实现“2D转3D”、“图片提取线稿”

你是否曾为一张2D图片无法完美展示3D效果而遗憾&#xff1f;是否曾因需要将手绘草图转为清晰线稿而耗时费力&#xff1f;这些曾让设计师、电商卖家、内容创作者头疼的难题&#xff0c;如今只需一句话指令&#xff0c;即可迎刃而解。一、案例一&#xff1a;2D图片→3D模型痛点场…

层次聚类:无需“猜”K值,如何让数据自己画出“家族图谱”?

层次聚类&#xff1a;无需“猜”K值&#xff0c;如何让数据自己画出“家族图谱”&#xff1f;&#x1f44b; 大家好&#xff0c;我是小瑞瑞&#xff01;欢迎回到我的专栏&#xff01; 在上一期&#xff0c;我们学会了强大的K-Means算法&#xff0c;但它也给我们留下了一个“灵魂…