组合

作者: 小白学编程 | 来源:发表于2018-11-28 10:37 被阅读0次

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

    示例:

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

    class Solution {
        public List<List<Integer>> combine(int n, int k) {
            List<List<Integer>> L = new ArrayList<>();
            List<Integer> list = new ArrayList<>();
            combine(n, k, 1, list, L);
            return L;
        }
        
        public void combine(int n, int k, int index, List<Integer> list, List<List<Integer>> L ) {
            
            if (list.size() == k) {
                L.add(new ArrayList<>(list));
                return ;
            }
            
            for (int i = index; i <= n; i++) {
                list.add(i);
                //注意第4个参数
                combine(n, k, i + 1, list, L);
                list.remove(list.size() - 1);
            }
                
        }
            
    }
    

    相关文章

      网友评论

          本文标题:组合

          本文链接:https://www.haomeiwen.com/subject/picaqqtx.html