zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    C++ 动态链接库、静态链接库
    WIN32 PE结构 重定位表
    WIN32 PE Bound Import 绑定导入表
    WIN32申请内存 物理页 VirtualAlloc VirtualFree
    PE文件结构详解 PE导入表
    PE文件结构详解 PE导出表
    WIN PE文件插入MessageBox
    WIN32 创建窗口 WNDCLASS 和CreateWindow
    053464
    053463
  • 原文地址:https://www.cnblogs.com/skillking/p/9691590.html
Copyright © 2011-2022 走看看