mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Update 0216.组合总和III.md
添加 0216.组合总和III Java版本
This commit is contained in:
@ -227,7 +227,38 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
Java:
|
Java:
|
||||||
|
```java
|
||||||
|
class Solution {
|
||||||
|
List<List<Integer>> res = new ArrayList<>();
|
||||||
|
List<Integer> list = new ArrayList<>();
|
||||||
|
|
||||||
|
public List<List<Integer>> combinationSum3(int k, int n) {
|
||||||
|
res.clear();
|
||||||
|
list.clear();
|
||||||
|
backtracking(k, n, 9);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void backtracking(int k, int n, int maxNum) {
|
||||||
|
if (k == 0 && n == 0) {
|
||||||
|
res.add(new ArrayList<>(list));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 因为不能重复,并且单个数字最大值是maxNum,所以sum最大值为
|
||||||
|
// (maxNum + (maxNum - 1) + ... + (maxNum - k + 1)) == k * maxNum - k*(k - 1) / 2
|
||||||
|
if (maxNum == 0
|
||||||
|
|| n > k * maxNum - k * (k - 1) / 2
|
||||||
|
|| n < (1 + k) * k / 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
list.add(maxNum);
|
||||||
|
backtracking(k - 1, n - maxNum, maxNum - 1);
|
||||||
|
list.remove(list.size() - 1);
|
||||||
|
backtracking(k, n, maxNum - 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user