diff --git a/solution/0200-0299/0216.Combination Sum III/README.md b/solution/0200-0299/0216.Combination Sum III/README.md index e7ab082b83fff..4e69a75a563b3 100644 --- a/solution/0200-0299/0216.Combination Sum III/README.md +++ b/solution/0200-0299/0216.Combination Sum III/README.md @@ -222,6 +222,32 @@ function combinationSum3(k: number, n: number): number[][] { } ``` +#### JavaScript + +```js +function combinationSum3(k, n) { + const ans = []; + const t = []; + const dfs = (i, s) => { + if (s === 0) { + if (t.length === k) { + ans.push(t.slice()); + } + return; + } + if (i > 9 || i > s || t.length >= k) { + return; + } + t.push(i); + dfs(i + 1, s - i); + t.pop(); + dfs(i + 1, s); + }; + dfs(1, n); + return ans; +} +``` + #### Rust ```rust @@ -457,6 +483,33 @@ function combinationSum3(k: number, n: number): number[][] { } ``` +#### JavaScript + +```js +function combinationSum3(k, n) { + const ans = []; + const t = []; + const dfs = (i, s) => { + if (s === 0) { + if (t.length === k) { + ans.push(t.slice()); + } + return; + } + if (i > 9 || i > s || t.length >= k) { + return; + } + for (let j = i; j <= 9; ++j) { + t.push(j); + dfs(j + 1, s - j); + t.pop(); + } + }; + dfs(1, n); + return ans; +} +``` + #### C# ```cs @@ -635,6 +688,39 @@ function bitCount(i: number): number { } ``` +#### JavaScript + +```js +function combinationSum3(k, n) { + const ans = []; + for (let mask = 0; mask < 1 << 9; ++mask) { + if (bitCount(mask) === k) { + const t = []; + let s = 0; + for (let i = 0; i < 9; ++i) { + if (mask & (1 << i)) { + t.push(i + 1); + s += i + 1; + } + } + if (s === n) { + ans.push(t); + } + } + } + return ans; +} + +function bitCount(i) { + i = i - ((i >>> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); + i = (i + (i >>> 4)) & 0x0f0f0f0f; + i = i + (i >>> 8); + i = i + (i >>> 16); + return i & 0x3f; +} +``` + #### C# ```cs diff --git a/solution/0200-0299/0216.Combination Sum III/README_EN.md b/solution/0200-0299/0216.Combination Sum III/README_EN.md index db3075f058166..a431318aa01d7 100644 --- a/solution/0200-0299/0216.Combination Sum III/README_EN.md +++ b/solution/0200-0299/0216.Combination Sum III/README_EN.md @@ -221,6 +221,32 @@ function combinationSum3(k: number, n: number): number[][] { } ``` +#### JavaScript + +```js +function combinationSum3(k, n) { + const ans = []; + const t = []; + const dfs = (i, s) => { + if (s === 0) { + if (t.length === k) { + ans.push(t.slice()); + } + return; + } + if (i > 9 || i > s || t.length >= k) { + return; + } + t.push(i); + dfs(i + 1, s - i); + t.pop(); + dfs(i + 1, s); + }; + dfs(1, n); + return ans; +} +``` + #### Rust ```rust @@ -456,6 +482,33 @@ function combinationSum3(k: number, n: number): number[][] { } ``` +#### JavaScript + +```js +function combinationSum3(k, n) { + const ans = []; + const t = []; + const dfs = (i, s) => { + if (s === 0) { + if (t.length === k) { + ans.push(t.slice()); + } + return; + } + if (i > 9 || i > s || t.length >= k) { + return; + } + for (let j = i; j <= 9; ++j) { + t.push(j); + dfs(j + 1, s - j); + t.pop(); + } + }; + dfs(1, n); + return ans; +} +``` + #### C# ```cs @@ -634,6 +687,39 @@ function bitCount(i: number): number { } ``` +#### JavaScript + +```js +function combinationSum3(k, n) { + const ans = []; + for (let mask = 0; mask < 1 << 9; ++mask) { + if (bitCount(mask) === k) { + const t = []; + let s = 0; + for (let i = 0; i < 9; ++i) { + if (mask & (1 << i)) { + t.push(i + 1); + s += i + 1; + } + } + if (s === n) { + ans.push(t); + } + } + } + return ans; +} + +function bitCount(i) { + i = i - ((i >>> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); + i = (i + (i >>> 4)) & 0x0f0f0f0f; + i = i + (i >>> 8); + i = i + (i >>> 16); + return i & 0x3f; +} +``` + #### C# ```cs diff --git a/solution/0200-0299/0216.Combination Sum III/Solution.js b/solution/0200-0299/0216.Combination Sum III/Solution.js new file mode 100644 index 0000000000000..69dbc4fb0b05b --- /dev/null +++ b/solution/0200-0299/0216.Combination Sum III/Solution.js @@ -0,0 +1,21 @@ +function combinationSum3(k, n) { + const ans = []; + const t = []; + const dfs = (i, s) => { + if (s === 0) { + if (t.length === k) { + ans.push(t.slice()); + } + return; + } + if (i > 9 || i > s || t.length >= k) { + return; + } + t.push(i); + dfs(i + 1, s - i); + t.pop(); + dfs(i + 1, s); + }; + dfs(1, n); + return ans; +} diff --git a/solution/0200-0299/0216.Combination Sum III/Solution2.js b/solution/0200-0299/0216.Combination Sum III/Solution2.js new file mode 100644 index 0000000000000..09c26a0619553 --- /dev/null +++ b/solution/0200-0299/0216.Combination Sum III/Solution2.js @@ -0,0 +1,22 @@ +function combinationSum3(k, n) { + const ans = []; + const t = []; + const dfs = (i, s) => { + if (s === 0) { + if (t.length === k) { + ans.push(t.slice()); + } + return; + } + if (i > 9 || i > s || t.length >= k) { + return; + } + for (let j = i; j <= 9; ++j) { + t.push(j); + dfs(j + 1, s - j); + t.pop(); + } + }; + dfs(1, n); + return ans; +} diff --git a/solution/0200-0299/0216.Combination Sum III/Solution3.js b/solution/0200-0299/0216.Combination Sum III/Solution3.js new file mode 100644 index 0000000000000..293d099a76072 --- /dev/null +++ b/solution/0200-0299/0216.Combination Sum III/Solution3.js @@ -0,0 +1,28 @@ +function combinationSum3(k, n) { + const ans = []; + for (let mask = 0; mask < 1 << 9; ++mask) { + if (bitCount(mask) === k) { + const t = []; + let s = 0; + for (let i = 0; i < 9; ++i) { + if (mask & (1 << i)) { + t.push(i + 1); + s += i + 1; + } + } + if (s === n) { + ans.push(t); + } + } + } + return ans; +} + +function bitCount(i) { + i = i - ((i >>> 1) & 0x55555555); + i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); + i = (i + (i >>> 4)) & 0x0f0f0f0f; + i = i + (i >>> 8); + i = i + (i >>> 16); + return i & 0x3f; +}