首页 > 其他分享 >组合

组合

时间:2023-06-15 14:37:52浏览次数:27  
标签:return cur 组合 int list combine ans


组合

题目:
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。

示例:

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

解题思路:典型的回溯算法问题

class Solution {
    
    private List<List<Integer>> ans = new ArrayList();
    
    public List<List<Integer>> combine(int n, int k) {
        combine(n, k, new ArrayList(), 1);
        return ans;
    }
    
    private void combine(int n, int k, List<Integer> list, int cur) {
        
        if(list.size() + (n - cur + 1) < k) {
            return ;
        }

        if(list.size() == k) {
            ans.add(new ArrayList(list));
            return ;
        }
        
        for(int i = cur; i <= n; i++) {
            list.add(i);
            combine(n, k, list, i + 1);
            list.remove((Integer) i);
        }
    }
}


标签:return,cur,组合,int,list,combine,ans
From: https://blog.51cto.com/u_14813899/6487202

相关文章

  • 数字组合
    数字组合题目:描述给定一个候选数字的集合candidates和一个目标值target。找到candidates中所有的和为target的组合。在同一个组合中,candidates中的某个数字出现次数不限。所有数值(包括target)都是正整数.返回的每一个组合内的数字必须是非降序的.返回的所......
  • Mybatis中SqlNode的组合模式
    组合( Composite )模式就是把对象组合成树形结构,以表示“部分-整体”的层次结构,用户可以像处理一个简单对象一样来处理一个复杂对象,从而使得调用者无需了解复杂元素的内部结构。组合模式中的角色有:抽象组件(容器):定义了树形结构中所有类的公共行为,例如add(),remove()等方法。树叶:最终......
  • 第八章--FusionCharts Free和组合图XML
    时间:2009-01-1222:23      作者:道长AIEQQ百度POCOYahoo新浪365Key天极和讯博拉Live奇客鲜果收客饭否叽歪  xAxisName='Month' showValues='0' de......
  • 调题时出现的问题 in 『组合数学』
    (递推计算组合数)P4071[SDOI2016]排列计数吐个槽先:没啥好吐槽的,就是我自己傻掉了.Orz.这题的式子非常水.在\(n\)个数里面选\(m\)个固定,即\(\mathrm{C}_n^m\).再把剩下的\(n-m\)个数错序排列,即\(h(n-m)\).因为只有上面的\(m\)个数才能满足\(i=a_i\)......
  • 代码随想录算法训练营第24天 | ● 理论基础 ● 77. 组合 - 第7章 回溯算法part01
     第七章 回溯算法part01今日内容: ●  理论基础 ●  77. 组合    详细布置   理论基础  其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。 题目链接/文章讲解:https://programmercar......
  • 代码随想录算法训练营第25天 | ● 216.组合总和III ● 17.电话号码的字母组合 - 第7章
     第七章 回溯算法part02 今日内容:  ●  216.组合总和III●  17.电话号码的字母组合  详细布置   216.组合总和III  如果把 组合问题理解了,本题就容易一些了。  题目链接/文章讲解:https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%B......
  • 设计原则之组合优先继承
    “组合优于继承”是一个面向对象编程的设计原则,它建议我们在需要复用代码的时候,尽量使用组合(has-a)的方式,而不是继承(is-a)的方式。组合是指一个类包含另一个类的对象作为自己的属性,而继承是指一个类直接从另一个类派生出来,拥有其所有的属性和方法。为什么要使用组合而不是继承呢?主......
  • 第10章 组合模式(Composite Pattern)
    组合模式(CompositePattern)——.NET设计模式系列之十一Terrylee,2006年3月概述组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。意图将对象组合......
  • k 倍区间(同余定理,组合数)
    题目描述给定一个长度为 N 的数列,1,2,⋯A1​,A2​,⋯AN​,如果其中一段连续的子序列 ,+1,⋯(≤)Ai​,Ai+1​,⋯Aj​(i≤j) 之和是 K 的倍数,我们就称这个区间 [,][i,j] 是 K 倍区间。你能求出数列中总共有多少个 K 倍区间吗?输入格式第一行包含两个整数 N 和 K......
  • CSS组合器(Combinators)
    前言组合器就是将选择器按照一定的语法规则进行组合,提供更丰富的元素选择方案。选择器主要分为类型选择器属性选择器类选择器ID选择器通配选择器组合器类型选择器列表(Selectorlist)如果你希望多个元素共享同一样式,可以使用该组合器,其有点类似并操作(or)。语法和示例......