Combinations 求1...n中k长度的组合 @LeetCode

LeetCode 最大为N的数字组合 我们有一组排序的数字 D,它是 {‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’} 的非空子集。(请注意,‘0’ 不包括在内。) 现在,我们用这些数字进行组合写数字,想用多少次就用多少次。例如 D = {‘1’,‘3’,‘5’},我们可以写出像 ‘13’, ‘551’, ‘1351315’ 这样的数字。 返回可以用 D 中的数字写出的小于或等于 N 的正整数的数目。 示例... 阅读详情

和之前的那篇permutation类似,同样的递归思想


package Level3;

import java.util.ArrayList;

/**
 * Combinations
 * 
 *  Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.

For example,
If n = 4 and k = 2, a solution is:

[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]
 *
 */
public class S77 {

	public static void main(String[] args) {
		System.out.println(combine(4, 2));
	}
	
	public static ArrayList<ArrayList<Integer>> combine(int n, int k) {
		ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
		ArrayList<Integer> list = new ArrayList<Integer>();
		rec(ret, list, 1, n, k);
		return ret;
	}
	
	// 和那道permutation的题目类似,一个思想
	// 递归找combination
	public static void rec(ArrayList<ArrayList<Integer>> ret, ArrayList<Integer> list, int start, int n, int k){
		// base case, 当k为0时,结束递归,添加后返回
		if(k == 0){
			ret.add(new ArrayList<Integer>(list));
			return;
		}
		
		// 遍历数组中的每一个数作为第一个元素(i)
		// 注意i的终止点,可以举几个具体例子来推出公式
		// start: 开始的位置
		for(int i=start; i<=n-k+1; i++){
			list.add(i);
			rec(ret, list, i+1, n, k-1);
			list.remove(list.size()-1);		// 恢复现场
		}
	}

}


模板题

public class Solution {
    public ArrayList<ArrayList<Integer>> combine(int n, int k) {
        ArrayList<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> al = new ArrayList<Integer>();
        rec(n, k, 1, al, ret);
        return ret;
    }
    
    public void rec(int n, int k, int pos, ArrayList<Integer> al, ArrayList<ArrayList<Integer>> ret){
        if(k == 0){
            ret.add(new ArrayList<Integer>(al));
            return;
        }
        
        for(int i=pos; i<=n-k+1; i++){
            al.add(i);
            rec(n, k-1, i+1, al, ret);
            al.remove(al.size()-1);
        }
    }
}



一种基于OpenPose和DNN的跌倒检测软件系统(中文&英文) 学习并实现一种跌倒检测模型,此模型基于OpenPose实现逐帧人体姿态检测,使用DNN识别人体动作。检测方式有在线与离线两种,本文主要测试了离线模式,测试效果较好。 阅读详情

相关推荐

图像评价之计算PSNR、SSIM、MSE、LPIPS和NIQE评价指标

如果代码对你的研究有所帮助,请为该仓库点上小星星。

书山有路,学海无涯! 2645

组合c(m,n)的计算方法

组合c(m,n)的几种计算方法

幸福的小骁仔的博客 4142

Perplexity SPACE沙箱平台:安全AI开发环境实战解析

沙箱技术通过资源隔离和权限控制创建受限执行环境,其核心原理是容器化隔离机制。在AI开发领域,这种技术解决了环境配置复杂性和安全风险等关键问题。SPACE沙箱平台作为AI代码执行环境,提供了标准化的开发沙箱,支持Python生态和主流AI框架。通过实战案例展示,该平台特别适用于情感分析等NLP任务的快速原型验证,帮助开发者在安全隔离的环境中测试AI模型和算法,显著提升开发效率并降低系统风险。

weixin_29029995的博客 274

泛型,存放N张图片

(* ************************************************* 1、里面放多张图片,用文件名作为索引 2、线程在背后从硬盘加载到内存 3、批量加载 4、加载完成后执行回调,回调是线程安全的 5、回调中的参数是新加载了多少张图片 **********************************************...

weixin_30502157的博客 90

Aras Innovator生命周期图实战:从配置到权限管理的全流程解析

本文详细解析了Aras Innovator生命周期图的全流程配置与权限管理,从基础概念到实战应用,涵盖状态设置、路径配置、权限控制等核心功能。通过实际案例和代码示例,帮助用户掌握如何高效管理数据生命周期,提升业务流程的规范性和效率。

ee345的博客 167

《Zephyr OS 入门与实战》第5章:内存管理策略

【代码】《Zephyr OS 入门与实战》第5章:内存管理策略。

2301_79143213的博客 349

回溯法求和为n的k个数

回溯法

Hulk百科,收拾烂摊子的百科全书 813

【人工智能】OpenClaw网关API速率限制报错全解析 API rate limit reached. Please try again later.

对应HTTP标准状态码为429(请求过多)。该报错集中出现在OpenClaw GATEWAY DASHBOARD的聊天会话界面,核心特征为:用户最初以为是单一模型服务商的问题,先后更换OpenAI、Gemini、Ollama、Moonshot、Mercury-2等多个主流大模型API后,该报错仍稳定触发,尤其在执行复杂任务时高频出现。

奶爸的编程之路,也就一周冷个三天 6459

[LeetCode] java的排列与组合C(m,n)、A(m,n)

考题 出处: 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 输入: nums = [1,2,3] 输出:[[3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []] 分析 首先 过滤掉重复元素 , 然后从 0 ~ array.length 之间找到所有组合即...

嗡汤圆的博客 2215

基于Dify实现对Excel的数据分析

在dify部署完成后,大家就可以基于此进行各种应用场景建设,目前dify支持聊天助手(包括对话工作流)、工作流、agent等模式的场景建设,我们在日常工作中经常会遇到各种各样的数据清洗、格式转换处理、数据统计成图等数据分析工作,本次主要基于对话工作流模式对Excel文件、csv文件进行解析处理,并进行成图等数据分析工作。主要用到的插件有LLM节点,文档提取器、参数提取器、自定义代码节点、echart插件等。实现解析Excel数据,经过上述不同节点的处理分析流程,最终实现数据统计图展示。

hhue2007的专栏 1万+

11、ThingsBoard集群部署k8s

今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来。

AldrichEugene 990

LeetCode40-组合总数II

自己果然还是一个3分钟热血的人儿啊 曾憧憬着每天会刷一道LeetCode 到了现在 才发现,热情已逐渐消退 虽然最近是有些忙 但感觉还是没有了以前的热情 得找回之前的初心啊! 40-组合总数II 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中...

飞奔的菜猪的博客 381

ConvNeXt 改进 :ConvNeXt添加GnConv递归门控卷积,二次创新CNBlock结构 ,独家首发

视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnConv),通过门控卷积和递归设计执行高阶空间交互。该新操作具有高度的灵活性和可定制性,兼容各种卷积变体,并将自注意力中的二阶交互扩展到任意阶数,而不会引入显著的额外计算。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 234

LeetCode--combinations(求一个数组指定个数所有组合)

题目描述 Given two integersnandk, return all possible combinations ofknumbers out of 1 ...n. For example, Ifn= 4 andk= 2, a solution is: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4...

夏洛克福尔摩斯 1118

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Leetcode46. 全排列

题目大意:求出一个序列的全排列题目分析:全排列问题都可以用递归的方式来解决,将第一个数分别与后面的每一个数交换,然后对后面的数进行全排列。全排列问题的模板如下:#include &lt;iostream&gt; using namespace std; void Perm(char s[], int m,int n){ if(m==n){ for(int i=0;i&lt...

Jaster_wisdom的专栏 971

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

leetcode Combinations计算有多少组合

Combinations Given two integersnandk, return all possible combinations ofknumbers out of 1 ...n. For example, Ifn= 4 andk= 2, a solution is: [ [2,4], [3,4], [2,3], [1,2], [1,...

架构设计 191

LeetCode之求组合数之和CombinationSum

问题描述:/** * Given a set of candidate numbers (C) and a target number (T), find all unique * combinations in C where the candidate numbers sums to T. * * The same repeated number may be chosen from

Dangerous的博客 2706

LeetCode之组合数

问题描述:/** * Given two integers n and k, return all possible combinations of k numbers out * of 1 ... n. For example, If n = 4 and k = 2, a solution is: * * [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4

Dangerous的博客 3410

每日一题算法:2020年9月8日 [ 组合](https://leetcode-cn.com/problems/combinations/) combine

2020年9月8日 组合 combine class Solution { public List<List<Integer>> combine(int n, int k) { } } 解题思路: 只要对题目进行一些基本的分析,不难发现这其实是一道递归的题目。而且是一道双递归的题目。 首先我们要理清这道题的本质。 我们可以这么想,所有的组合可能种,除去包含1的组合还有多少?怎么求?我们可以这么表示不包含1的组合,2-n能够组成的长度为2的组合。那么根据这个规则

I12XXXXXLbull的博客 306

LeetCode 39&40 Medium 组合数之和1/2 Python

39题:组合数之和     算法:递归/回溯     思路:             像求子集一样,需要遍历所有的可能情况,而while,for这样的循环都是某种意义上的"定循环",循环         的"次数"是固定的,这里打引号是因为,while的次数可以不定,但是for和while都是一层循环,应该用这         个词描述比较好,都是单层循环,而递归可以嵌套,根据递归的条件...

h 292

POJ 题目1306 Combinations(排列组合)

Combinations Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8701   Accepted: 4047 Description Computing the exact number of ways that N things can be taken

Jogging_Clown 1162

输出从n个数中选m个数的所有组合

题目:n个数1,2,...,n,从这n个数中任意选m个数,输出所有不同组合,共有C(n,m)种不同组合。如n=5,m=3,会产生如下输出: 5 4 3  5 4 2  5 4 1  5 3 2  5 3 1  5 2 1  4 3 2  4 3 1  4 2 1  3 2 1  解题思路1:采用递归的方法,终止条件是当m==0时,此时输出所有这个组合。否则遍历n,n-1,

life_liver的专栏 1万+

每天一道LeetCode-----找到有多少个组合加起来和是n,每个组合的数字只能是1或者2

Climbing Stairs原题链接Climbing Stairs 找到有多少个组合的和是给定的n,要求组合中的每个数字只能是1和2动态规划即可 代码如下class Solution { public: int climbStairs(int n) { vector<int> dp(n + 1); dp[0] = dp[1] = 1;

一个程序渣渣的小后院 2378

C# 排列组合算法

<br />/*<br /> * A Combination & Permutation Algorithm Implemented with C#<br /> * Nov. 25, 2006<br /> * by Adrian<br /> * E-mail(Windows Live Messenger): sanyuexx@hotmail.com<br /> * Blog: http://www.cnblogs.com/dah<br /> */<br />using System;<br />using

563

LeetCode39 组合总数Python

题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: 输入: candidates = [2,3,6,7], target = 7, 所求解集为: [ ...

R18830287035的博客 740

LeetCode 77. Combinations(N选K组合)

题目描述:    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n.    For example, If n = 4 and k = 2, a solution is:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1...

andersonxie的博客 674
上一篇: Search a 2D Matrix 在有序二维矩阵查找数 @LeetCode
下一篇: Subsets 求子集 @LeetCode
chiiis
博客等级 码龄14年 422粉丝 429原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值