首页 > 其他 > 详细

k Sum II

时间:2017-08-06 13:27:40      阅读:138      评论:0      收藏:0      [点我收藏+]
Given n unique integers, number k (1<=k<=n) and target.

Find all possible k integers where their sum is target.

Have you met this question in a real interview? Yes
Example
Given [1,2,3,4], k = 2, target = 5. Return:

[
  [1,4],
  [2,3]
]
Tags 
LintCode Copyright Depth First Search

 

public ArrayList<ArrayList<Integer>> kSumII(int[] A, int k, int target) {
        // write your code here
        ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
        ArrayList<Integer> list = new ArrayList<>();
        if (A == null || k > A.length) {
            ans.add(list);
            return ans;
        }
        Arrays.sort(A);
        dfs(ans, list, A, k, target, 0);
        return ans;
    }
    private void dfs(ArrayList<ArrayList<Integer>> ans, ArrayList<Integer> list, int[] A, int k, int target, int pos) {
        if (k == 0 && target == 0) {
            ans.add(new ArrayList(list));
            return;
        }
        if (target < 0 || pos >= A.length || pos + k > A.length) {
            return;
        }
        for (int i = pos; i < A.length; i++) {
            list.add(A[i]);
            dfs(ans, list, A, k - 1, target - A[i], i + 1);
            list.remove(list.size() - 1);
        }
    }

  

k Sum II

原文:http://www.cnblogs.com/apanda009/p/7294274.html

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