leetcode77. Combinations

来源:互联网 发布:阿里巴巴自创数据库 编辑:程序博客网 时间:2024/06/05 17:08

77. 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],
]

解法

有序,长度为k,回溯法

public class Solution {    public List<List<Integer>> combine(int n, int k) {        int[] nums = new int[n];        for (int i = 0; i < n; i++) {            nums[i] = i + 1;        }        List<List<Integer>> permutes = new ArrayList<List<Integer>>();        List<Integer> permute = new ArrayList<Integer>();        helper(permutes, permute, nums, k, 0);        return permutes;    }    private static void helper(List<List<Integer>> permutes, List<Integer> permute, int[] nums, int k, int index) {        // 出口        if (permute.size() == k) {            permutes.add(new ArrayList<Integer>(permute));            return;        }        // 过程        for (int i = index; i < nums.length; i++) {            if(permute.contains(nums[i])) {                continue;            }            permute.add(nums[i]);            helper(permutes, permute, nums, k, i + 1);            permute.remove(permute.size() - 1);        }    }}
原创粉丝点击