zoukankan      html  css  js  c++  java
  • [LeetCode][Java] 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],
    ]

    题意:

    给定两个整数 n 和 k,返回1 ... n中k个数字的全部的组合。

    例如说。

    假设n=4 and k=2,解为:

    [
      [2,4],
      [3,4],
      [2,3],
      [1,2],
      [1,3],
      [1,4],
    ]

    算法分析:

    用一个循环递归处理子问题。

    AC代码:

    public class Solution 
    {
        public ArrayList<ArrayList<Integer>> combine(int n, int k)
        { 
            ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
            if(n<=0 || n<k) 
             return res; 
            helper(n,k,1,new ArrayList<Integer>(), res);
            return res;
        }
        private void helper(int n, int k, int start, ArrayList<Integer> item, ArrayList<ArrayList<Integer>> res)
        { 
            if(item.size()==k) 
            { 
                res.add(new ArrayList<Integer>(item));
                return; 
            } 
            for(int i=start;i<=n;i++) // try each possibility number in current position 
            { 
                item.add(i); 
                helper(n,k,i+1,item,res); // after selecting number for current position, process next position  
                item.remove(item.size()-1); // clear the current position to try next possible number  
            } 
        }
    }


  • 相关阅读:
    Hadoop压缩
    Hive数据倾斜总结
    DQL、DML、DDL、DCL
    HashMap/HashSet,hashCode,哈希表
    HashMap详解
    Hive分区和桶
    String不可变StringBuffer可变
    Java线程和守护进程
    Ambari安装小记
    P3
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7204142.html
Copyright © 2011-2022 走看看