剑指Offer || 080.组合

news/2024/11/9 3:20:35/

题目

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

注意:本题与主站 77 题相同: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

LCR 080. 组合 - 力扣(LeetCode)

题解

思路:回溯解决,使用一个perm来记录单个的情况。回溯时记得递归出来之后删去已有的改变。java传递list时是地址,因此需要result.add(new ArrayList<>(perm)),不能直接add

剪枝:当发现n剩下的数量不足以撑起k-perm.size()的时候,可以剪去。

注意是从1到n的,不是0到n-1.

代码:

class Solution {List<Integer> perm;List<List<Integer>> result;int n,k;public List<List<Integer>> combine(int n, int k) {perm =new ArrayList<>();result = new ArrayList<>();this.n=n;this.k=k;dfs(1);return result;}private void dfs(int j) {if(perm.size()==k) {result.add(new ArrayList<>(perm));return;}for(int i=j;i<=n;i++) {// 剪枝:如果剩余的个数不够填充list了,直接返回即可if(n-i+1 < k-perm.size()) return;perm.add(i);dfs(i+1);perm.remove(perm.size()-1);}}
}

tips:写法,可以将result,perm,n,k等写在属性值里,通过函数构造进去,这样dfs就不用传多个值了。


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

相关文章

iOS使用AVCaptureSession实现音视频采集

AVCaptureSession配置采集行为并协调从输入设备到采集输出的数据流。要执行实时音视频采集&#xff0c;需要实例化采集会话并添加适当的输入和输出。 AVCaptureSession&#xff1a;管理输入输出音视频流AVCaptureDevice&#xff1a;相机硬件的接口&#xff0c;用于控制硬件特性…

axios 多个baseURL配置、实现不同前缀代理到不同的服务器的几种方式

前言&#xff1a; 在开发中&#xff0c;有可能遇到每部分的功能的需要调用另一台服务器的地址。这个时候就需要设置不同的请求前缀首先代理到不同的服务器地址。 一、axios封装实例以及代理&#xff1a;(不是完整的封装实例&#xff0c;重点在于baseURL的区别) 文件路径&…

stm32 ETH

1 How do I create a project for STM32H7 with Ethernet and LwIP stack working? STM32 LWIP 接收大数据包导致Hardfault问题解决记录 Trying to get Ethernet, LWIP and FreeRTOS working on the STM32H745. Testing on the NUCLEO-H745ZI-Q using FW_1.7 and the STM32Cub…

力扣 203 移除链表元素

目录 1.解题思路2.代码实现 1.解题思路 利用快慢指针&#xff0c;如果快指针此时的值为val则将此时满指针的next指向快指针的next利用循环&#xff0c;其次&#xff0c;要特意判断链表的头部为val的情况以及链表为空的情况. 2.代码实现 struct ListNode* removeElements(str…

JAVA深化篇_25—— 多线程介绍

多线程介绍 多线程与并发编程 什么是程序&#xff1f; 程序&#xff08;Program&#xff09;是一个静态的概念&#xff0c;一般对应于操作系统中的一个可执行文件。 什么是进程? 执行中的程序叫做进程(Process)&#xff0c;是一个动态的概念。其实进程就是一个在内存中独…

百度小程序DIY小程序源码系统+轻松创建百度小程序,实现个性化功能 带完整的搭建教程

在现在大环境的影响下&#xff0c;小程序已经成为人们日常生活中不可或缺的一部分。百度小程序作为国内领先的小程序平台之一&#xff0c;为广大开发者提供了丰富的开发资源和工具。今天源码小编就来给大家分享一款百度小程序DIY小程序源码系统。百度小程序DIY小程序源码系统是…

报错-TypeError: Cannot read properties of undefined (reading ‘url‘)

背景&#xff1a;使用pinia进行状态管理&#xff0c;优化接口调用请求时&#xff0c;报错 TypeError: Cannot read properties of undefined (reading url) TypeError:无法读取未定义的属性&#xff08;读取“url”&#xff09; 解决&#xff1a;花括号的属性未定义&#xf…

【Git】Git使用指南+上传项目踩坑总结

记录Git 使用和命令解读&#xff1a; git init git add .git commit -m "first commit"git branch -M maingit remote add origin https://github.com/xxx.gitgit push -u origin main 这是最经常用到的使用 git上传项目的代码&#xff0c;值得注意的是&#xff0c…