发布于 

TypeScript编写寻找和为目标值的元素集合的函数

编写通用多数之和的辅助函数

相关思路

  • 定义函数签名:
1
2
3
4
type SumSet = number[][];
function findSumSets(nums: Array<number>, target: number): SumSet {
// 函数体
}
  • 实现函数逻辑:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function findSumSets(nums: Array<number>, target: number): SumSet {
// 结果数组
let result: SumSet = [];
// 临时数组
let temp: number[] = [];
// 辅助函数
function backtrack(start: number, sum: number) {
// 和等于目标值,记录结果
if (sum === target) {
result.push([...temp]);
return;
}
// 和大于目标值或遍历完元素,返回
if (sum > target || start >= nums.length) {
return;
}
// 对每个元素,添加或不添加
temp.push(nums[start]);
backtrack(start + 1, sum + nums[start]);
temp.pop();
backtrack(start + 1, sum);
}
// 调用辅助函数
backtrack(0, 0);
// 返回结果数组
return result;
}
  • 测试函数正确性:
1
2
3
4
5
6
// 输入
let nums = [1, 2, 3, 4, 5];
let target = 6;
// 输出
console.log(findSumSets(nums, target));
// [[1, 2, 3], [2, 4]]

相关参考