Leetcode-combinations

来源:互联网 发布:淘宝冲销量网站 编辑:程序博客网 时间:2024/06/05 10:08

回溯!!!

题目描述


Given two integers n and k, return all possible combinations ofk 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],]
回溯是我觉得最难的题目,因为我无法理清楚里面经历的步骤。今天一并边看题变总结。

import java.util.*;public class Solution {    public ArrayList<ArrayList<Integer>> combine(int n, int k) {        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();        if(k == 0)            return result;        ArrayList<Integer> track = new ArrayList<Integer>();                back(result, track, 1, n, k);        return result;    }    public void back(ArrayList<ArrayList<Integer>> result, ArrayList<Integer> track, int m , int n, int k) {        if(track.size() == k) {            ArrayList<Integer> t = new ArrayList<Integer>(track);            result.add(t);            return;        }        for(int i=m; i<=n; i++) {            track.add(i);            back(result, track, i+1, n, k);            track.remove(track.size()-1);        }    }}


0 0
原创粉丝点击