题目:k数和 II

来源:互联网 发布:vb.net 表格控件 编辑:程序博客网 时间:2024/04/29 09:10

给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字。    

在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案。

您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?AirbnbAlibaba Amazon Apple Baidu Bloomberg Cisco Dropbox Ebay Facebook Google Hulu Intel Linkedin Microsoft NetEase Nvidia Oracle Pinterest Snapchat Tencent Twitter Uber Xiaomi Yahoo Yelp Zenefits
感谢您的反馈
样例

给出[1,2,3,4],k=2, target=5,返回[[1,4],[2,3]]

标签 Expand
LintCode 版权所有深度优先搜索



相关题目 Expand         

public class Solution {    /**     * @param A: an integer array.     * @param k: a positive integer (k <= length(A))     * @param target: a integer     * @return a list of lists of integer     */    public ArrayList<ArrayList<Integer>> kSumII(int A[], int k, int target) {        // write your code here          if (null == A || 0 == A.length)               return null;          ArrayList<ArrayList<Integer>> res = new ArrayList<>();          ArrayList<Integer> tmp = new ArrayList<>();          kSumf(A, 0,k, target, 0, tmp, res);          return res;     }     public void kSumf(int A[], int index,int k, int target, int sum,               ArrayList<Integer> tmp, ArrayList<ArrayList<Integer>> res) {               if(tmp.size()==k&&sum==target){                    res.add((ArrayList<Integer>) tmp.clone());                                       return;               }               if(index>=A.length){                    return;               }               if(sum>target){                    return;               }               tmp.add(A[index]);               kSumf(A, index+1, k, target, sum+A[index], tmp, res);               tmp.remove(tmp.size()-1);               kSumf(A, index+1, k, target, sum, tmp, res);                   }   }



0 0
原创粉丝点击