mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 15:45:40 +08:00
@ -227,6 +227,44 @@ public:
|
||||
|
||||
|
||||
Java:
|
||||
|
||||
模板方法
|
||||
```java
|
||||
class Solution {
|
||||
List<List<Integer>> result = new ArrayList<>();
|
||||
LinkedList<Integer> path = new LinkedList<>();
|
||||
|
||||
public List<List<Integer>> combinationSum3(int k, int n) {
|
||||
backTracking(n, k, 1, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void backTracking(int targetSum, int k, int startIndex, int sum) {
|
||||
// 减枝
|
||||
if (sum > targetSum) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (path.size() == k) {
|
||||
if (sum == targetSum) result.add(new ArrayList<>(path));
|
||||
return;
|
||||
}
|
||||
|
||||
// 减枝 9 - (k - path.size()) + 1
|
||||
for (int i = startIndex; i <= 9 - (k - path.size()) + 1; i++) {
|
||||
path.add(i);
|
||||
sum += i;
|
||||
backTracking(targetSum, k, i + 1, sum);
|
||||
//回溯
|
||||
path.removeLast();
|
||||
//回溯
|
||||
sum -= i;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
其他方法
|
||||
```java
|
||||
class Solution {
|
||||
List<List<Integer>> res = new ArrayList<>();
|
||||
|
Reference in New Issue
Block a user