• 77. Combinations


    一、题目

      1、审题

      2、分析

        给出整数 n,整数 k,求 1~n 之间的 k 个数字的所有组成。

    二、解答

      1、思路:

        方法一、运用 DFS 方法。

    public List<List<Integer>> combine(int n, int k) {
            
            
            List<List<Integer>> resultList  = new ArrayList<List<Integer>>();
            
            helper(resultList, new ArrayList<Integer>(), 1, n, k);
            
            
            return resultList;
        }
        
        private void helper(List<List<Integer>> resultList,
                ArrayList<Integer> arrayList, int startIndex, int maxVal, int num) {
            
            if(num == 0) {
                resultList.add(new ArrayList<>(arrayList));
                return;
            }
            
            for (int i = startIndex; i <= maxVal; i++) {
                arrayList.add(i);
                helper(resultList, arrayList, i+1, maxVal, num - 1);
                arrayList.remove(arrayList.size()-1);
            }
            
        }

      

      方法二、f(n, k) = f(n-1, k-1) + f(n-1, k) 

        即: k 个数字中选了 数字 n 和 k 个数字中未选取数字 n 两种情况。

    public List<List<Integer>> combine2(int n, int k) {
            
            List<List<Integer>> resultList  = new ArrayList<List<Integer>>();
            if(k == n || k == 0) {
                List<Integer> row = new LinkedList<>();
                for (int i = 1; i <= k; i++) 
                    row.add(i);
                resultList.add(row);
                return resultList;
            }
            
            // n is selected;
            resultList = combine(n - 1, k - 1);
            for(List<Integer> list: resultList)
                list.add(n);
            // n is not selected;
            resultList.addAll(combine(n-1, k));
            
            return resultList;
        }
  • 相关阅读:
    Linux进阶之Linux中的标准输入输出
    PermCheck
    FrogRiverOne
    PermMissingElem
    FrogJmp
    TapeEquilibrium
    恒生电子长沙2016实习生笔试题
    接口和抽象类的异同点?
    C#实现二叉树
    C#实现栈和队列
  • 原文地址:https://www.cnblogs.com/skillking/p/9691590.html
Copyright © 2020-2023  润新知