`
testforvln
  • 浏览: 18948 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • superich2008: 1、去重可以用Set集合2、在排序后,相邻2个元素如果相同可以 ...
    4Sum

Combinations

 
阅读更多
全排列 按理说很简单,可是用递归写,边界条件就还是难想清楚,sigh
主要是n<k和k==1的条件要想清楚
public class Solution {
    public ArrayList<ArrayList<Integer>> combine(int n, int k) {
        // Start typing your Java solution below
        // DO NOT write main() function
        ArrayList<ArrayList<Integer>> results = new ArrayList<ArrayList<Integer>>();
        if (n < 1 || k < 1 || n<k)
            return results;
        if (k == 1){
            for (int i = 1; i != n+1; ++i){
                ArrayList<Integer> temp = new ArrayList<Integer>();
                temp.add(i);
                results.add(temp);
            }
            return results;
        }
        ArrayList<ArrayList<Integer>> results1 = combine(n-1, k-1);
        for (int i = 0; i < results1.size(); ++i)
            results1.get(i).add(n);
        ArrayList<ArrayList<Integer>> results2 = combine(n-1, k);
        results.addAll(results1);
        results.addAll(results2);
        return results;
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics