kSumII

来源:互联网 发布:中国网络移动经纪人 编辑:程序博客网 时间:2024/06/07 04:21

结合前面的permutation和combination的DFS来解这道题。

再看看自己都错在哪里了!!!

/**

     * @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) {
        ArrayList<ArrayList<Integer>> results = new ArrayList<>();
        if (A == null || A.length < K) {
            return results;
        }
        Arrays.sort(A);
        kSumIIHelper(A, K , target, results, new ArrayList<Integer>(), 0);
        return results;
    }
    
    private void kSumIIHelper(int []A, int K, int target, ArrayList<ArrayList<Integer>> results, ArrayList<Integer> list, int index) {
        if (list.size() == K) {
            if (target == 0) {
                //2 results.add(list);
                results.add(new ArrayList<Integer>(list));
            }
            return;
        }
        for (int i = index; i < A.length; i++) {
            list.add(A[i]);
            //3 kSumIIHelper(A, K - 1, target - A[i], results, list, i + 1);
            kSumIIHelper(A, K, target - A[i], results, list, i + 1);
            //1 lsit.remove(list.size() - 1);
            list.remove(list.size() - 1);
        }
    }
0 0
原创粉丝点击