*[Lintcode]k Sum II
2016-11-20 18:11
232 查看
Given n unique integers, number k (1<=k<=n) and target.
Find all possible k integers where their sum is target.
Example
Given
target =
分析:递归
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) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
helper(A, k, target, 0, res, new ArrayList<Integer>());
return res;
}
void helper(int[] A, int k, int target, int index, ArrayList<ArrayList<Integer>> res, ArrayList<Integer> list) {
if(target == 0 && k == 0) {
res.add(new ArrayList<Integer>(list));
return;
}
if(index >= A.length || target < 0 || k < 0) return;
for(int i = index; i < A.length; i++) {
list.add(A[i]);
helper(A, k - 1, target - A[i], i + 1, res, list);
list.remove(list.size() - 1);
}
}
}
Find all possible k integers where their sum is target.
Example
Given
[1,2,3,4], k =
2,
target =
5. Return:
[ [1,4], [2,3] ]
分析:递归
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) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
helper(A, k, target, 0, res, new ArrayList<Integer>());
return res;
}
void helper(int[] A, int k, int target, int index, ArrayList<ArrayList<Integer>> res, ArrayList<Integer> list) {
if(target == 0 && k == 0) {
res.add(new ArrayList<Integer>(list));
return;
}
if(index >= A.length || target < 0 || k < 0) return;
for(int i = index; i < A.length; i++) {
list.add(A[i]);
helper(A, k - 1, target - A[i], i + 1, res, list);
list.remove(list.size() - 1);
}
}
}
相关文章推荐
- [LintCode] Continuous Subarray Sum II
- [Lintcode] Combination Sum II
- [Lintcode]Interval Sum II区间求和 II
- Lintcode: Interval Sum II
- LintCode_207 interval-sum-ii
- Lintcode - k sum II
- [lintcode] Binary Tree Maximum Path Sum II
- [LintCode]k Sum II
- [LintCode] Continuous Subarray Sum II
- [lintcode] Binary Tree Maximum Path Sum II
- [LintCode]k Sum II
- 【LeetCode】Path Sum II
- HDU1977 Consecutive sum II【水题】
- [LeetCode] Two Sum II - Input array is sorted 两数之和之二 - 输入数组有序
- [Leetcode 113, Medium] Path sum II
- 硬币排成线 II-LintCode
- python_lintcode_115不同的路径 II_112删除排序链表中的重复元素
- nyoj-879-Consecutive sum II
- LintCode 376: Binary Tree Path Sum
- [LeetCode]Combination Sum II