mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Merge pull request #1370 from Jerry-306/patch-51
重写 0216.组合总和III JavaScript 版本代码
This commit is contained in:
@ -360,39 +360,30 @@ func backTree(n,k,startIndex int,track *[]int,result *[][]int){
|
|||||||
## javaScript
|
## javaScript
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// 等差数列
|
/**
|
||||||
var maxV = k => k * (9 + 10 - k) / 2;
|
* @param {number} k
|
||||||
var minV = k => k * (1 + k) / 2;
|
* @param {number} n
|
||||||
|
* @return {number[][]}
|
||||||
|
*/
|
||||||
var combinationSum3 = function(k, n) {
|
var combinationSum3 = function(k, n) {
|
||||||
if (k > 9 || k < 1) return [];
|
const backtrack = (start) => {
|
||||||
// if (n > maxV(k) || n < minV(k)) return [];
|
const l = path.length;
|
||||||
// if (n === maxV(k)) return [Array.from({length: k}).map((v, i) => 9 - i)];
|
if (l === k) {
|
||||||
// if (n === minV(k)) return [Array.from({length: k}).map((v, i) => i + 1)];
|
const sum = path.reduce((a, b) => a + b);
|
||||||
|
if (sum === n) {
|
||||||
const res = [], path = [];
|
res.push([...path]);
|
||||||
backtracking(k, n, 1, 0);
|
}
|
||||||
return res;
|
|
||||||
function backtracking(k, n, i, sum){
|
|
||||||
const len = path.length;
|
|
||||||
if (len > k || sum > n) return;
|
|
||||||
if (maxV(k - len) < n - sum) return;
|
|
||||||
if (minV(k - len) > n - sum) return;
|
|
||||||
|
|
||||||
if(len === k && sum == n) {
|
|
||||||
res.push(Array.from(path));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
for (let i = start; i <= 9 - (k - l) + 1; i++) {
|
||||||
const min = Math.min(n - sum, 9 + len - k + 1);
|
path.push(i);
|
||||||
|
backtrack(i + 1);
|
||||||
for(let a = i; a <= min; a++) {
|
|
||||||
path.push(a);
|
|
||||||
sum += a;
|
|
||||||
backtracking(k, n, a + 1, sum);
|
|
||||||
path.pop();
|
path.pop();
|
||||||
sum -= a;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let res = [], path = [];
|
||||||
|
backtrack(1);
|
||||||
|
return res;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user