K数和II——lintcode90

K数和II

题目:K数和II

给定n个不同的正整数,整数k1<=k<=n)以及一个目标数字。
在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案

样例 :

输入:

数组 = [1,2,3,4]
k = 2
target = 5

输出:

[[1,4],[2,3]]

题解:回溯法

public class Solution {
    private List<List<Integer>> results;
    public void dfs(int[] nums, int start, int k, int sum, int target, List<Integer> result) {
        if(result.size()==k) {
            if(sum==target) results.add(new ArrayList<>(result));
            return;
        }
        for(int i=start;i<nums.length;i++) {
            result.add(nums[i]);
            dfs(nums, i+1, k, sum+nums[i], target, result);
            result.remove(result.size()-1);
        }
    }
    public List<List<Integer>> kSumII(int[] A, int k, int target) {
        results=new ArrayList<>();
        if(A==null || A.length==0) return results;
        dfs(A, 0, k, 0, target,new ArrayList<>());

        return results;
    }
}
posted @ 2022-01-16 21:04  言思宁  阅读(71)  评论(0编辑  收藏  举报