首页 > 其他 > 详细

[Leetcode]-- Combinations

时间:2014-02-02 17:49:38      阅读:371      评论:0      收藏:0      [点我收藏+]

Interation 

bubuko.com,布布扣
public class Solution {
    public ArrayList<ArrayList<Integer>> combine(int n, int k) {

        if (n < k)
            return null;
        ArrayList<ArrayList<Integer>> all = new ArrayList<ArrayList<Integer>>();
        if (k == 1) {
            for (int i = 1; i <= n; i++) {
                ArrayList<Integer> al = new ArrayList<Integer>();
                al.add(i);
                all.add(al);
            }
            return all;
        }
        for (int i = n; i >= k; i--) {
            for (ArrayList<Integer> al : combine(i - 1, k - 1)) {
                al.add(i);
                all.add(al);
            }
        }
        return all;
    }
}
bubuko.com,布布扣

Recursion

bubuko.com,布布扣
public class Solution {
    public ArrayList<ArrayList<Integer>> combine(int n, int k) {
        return helper(1, n, k);
    }

    private ArrayList<ArrayList<Integer>> helper(int start, int end, int k) {
        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> re = new ArrayList<Integer>();
        if (end - start + 1 < k || k <= 0) {
            result.add(re);
            return result;
        }
        // add all to the re
        if (end - start + 1 == k) {
            for (int i = start; i <= end; i++) {
                re.add(i);
            }
            result.add(re);
            return result;
        }
        // include start
        ArrayList<ArrayList<Integer>> tmp = helper(start + 1, end, k - 1);
        for (ArrayList<Integer> r : tmp) {
            re = new ArrayList<Integer>(r);
            re.add(0, start);
            result.add(re);
        }
        // not inclued start
        ArrayList<ArrayList<Integer>> tmp2 = helper(start + 1, end, k);
        result.addAll(tmp2);
        return result;
    }
}
bubuko.com,布布扣

[Leetcode]-- Combinations

原文:http://www.cnblogs.com/RazerLu/p/3537174.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!