【LeetCode】C# 77、Combinations

来源:互联网 发布:电脑绑定mac地址 编辑:程序博客网 时间:2024/06/05 15:05

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],
]

给定两个值k,n,返回用n个数字中的k个形成的所有排列组合。
思路:通过迭代,遍历n个数,依次往temp数组中添加元素直到元素个数为k在添加到result的数组组。

public class Solution {    public List<List<int>> Combine(int n, int k) {        List<List<int>> combs = new List<List<int>>();        combine(combs, new List<int>(), 1, n, k);        return combs;    }    public static void combine(List<List<int>> combs, List<int> comb, int start, int n, int k) {        if(k==0) {            combs.Add(new List<int>(comb));            return;        }        for(int i=start;i<=n;i++) {            comb.Add(i);            combine(combs, comb, i+1, n, k-1);            comb.RemoveAt(comb.Count-1);        }    }}
原创粉丝点击