lintcode k数和||

作者: yzawyx0220 | 来源:发表于2017-01-18 17:19 被阅读90次

给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字。    
在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案。
样例
给出[1,2,3,4],k=2, target=5,返回 [[1,4],[2,3]]
题目链接:http://www.lintcode.com/zh-cn/problem/k-sum-ii/

典型的深度优先搜索,当然这道题可以返回res.size()得到上一题的结果,但是这样的效率太低了。

class Solution {
public:
    /**
     * @param A: an integer array.
     * @param k: a positive integer (k <= length(A))
     * @param target: a integer
     * @return a list of lists of integer 
     */
    vector<vector<int> > kSumII(vector<int> A, int k, int target) {
        // write your code here
        vector<vector<int> > res;
        vector<int> temp;
        sum(A,k,target,temp,res,0);
        return res;
    }
    void sum(vector<int> A,int k,int target,vector<int> &temp,vector<vector<int> > &res,int i) {
        if (k == 0 && target == 0) {
            res.push_back(temp);
            return;
        }
        if (i == A.size() || target < 0) return;
        temp.push_back(A[i]);
        sum(A,k - 1,target - A[i],temp,res,i + 1);
        temp.pop_back();
        sum(A,k,target,temp,res,i + 1);
    }
};

相关文章

  • lintcode k数和

    给定n个不同的正整数,整数k(k < = n)以及一个目标数字。在这n个数里面找出K个数,使得这K个数的和等于目标...

  • lintcode k数和||

    给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字。在这n个数里面找出K个数,使得这K个数的和等...

  • lintcode-k数和

    动态规划(确定0-1背包、完全背包、多重背包)0-1背包:每个元素要么出现,要么不出现,逆序遍历,数组定义为:前i...

  • 90 lintcode k数和

    class Solution { public: /* * @param A: an integer a...

  • Remove K Digits

    https://www.lintcode.com/problem/remove-k-digits/description

  • k数和

    def kSum(self, A, k, target):n = len(A)if n <= 0 or k <= ...

  • K数和

    题目: 给定n个不同的正整数,整数k(k < = n)以及一个目标数字。 在这n个数里面找出K个数,使得这K个数的...

  • LintCode 5. Kth Largest Element

    原题 LintCode 5. Kth Largest Element Description Find K-th ...

  • 第k大元素

    (lintcode上面的题解)第k大元素:(从小到大的排序)

  • lintcode 丑数

    设计一个算法,找出只含素因子2,3,5 的第 n 大的数。直接寻找丑数,由定义可知,丑数是由2m,3n,5^l,因...

网友评论

    本文标题:lintcode k数和||

    本文链接:https://www.haomeiwen.com/subject/vclbbttx.html