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  
            } 
        }
    }


  • 相关阅读:
    题解报告:hdu 2062 Subset sequence
    CSS3滑块菜单
    CSS3环形动画菜单
    可折叠显示的发光搜索表单
    Tab动画菜单
    侧边自定义滚动条
    css3条纹边框效果
    css3图片过滤效果
    CSS3图片悬停放大动画
    CSS3响应式侧边菜单
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7204142.html
Copyright © 2011-2022 走看看