zoukankan      html  css  js  c++  java
  • [leetcode]Combinations

    Combinations

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

    算法:

    思路1: 迭代,k个数就用k层迭代。貌似实现起来也是略有难度的

    思路2: DFS,不啰嗦

     1 public class Solution {
     2     List<List<Integer>> result = new ArrayList<List<Integer>>();
     3     public List<List<Integer>> combine(int n, int k) {
     4         if(n < k || k < 0 || n < 0) return result;
     5         List<Integer> list = new ArrayList<Integer>();
     6         dfs(list,1, n, k);
     7         return result;
     8     }
     9     private void dfs(List<Integer> list,int start,int n,int left){
    10         if(left == 0){
    11             result.add(new ArrayList<Integer>(list));
    12             return ;
    13         }
    14         for(int i = start; i <= n ; i++){
    15             list.add(i);
    16             dfs(list, i + 1, n, left - 1);
    17             list.remove(list.size() - 1);
    18         }
    19     }
    20 }
  • 相关阅读:
    CodeForces 656B
    时间限制
    哈哈
    &1的用法
    codeforces 385 c
    hdu 1176 免费馅饼
    poj 1114 完全背包 dp
    poj 1115 Lifting the Stone 计算多边形的中心
    jar包解压
    重定向
  • 原文地址:https://www.cnblogs.com/huntfor/p/3860695.html
Copyright © 2011-2022 走看看