-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0077-combinations.js
More file actions
40 lines (37 loc) · 898 Bytes
/
0077-combinations.js
File metadata and controls
40 lines (37 loc) · 898 Bytes
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
28
29
30
31
32
33
34
35
36
37
38
39
40
/**
* Combinations
* Time Complexity: O(C(n, k) * k)
* Space Complexity: O(C(n, k) * k)
*/
var combine = function (n, k) {
const allCombinations = [];
const currentSelection = [];
const startValue = 1;
function generateCombinations(
upperBound,
requiredSize,
currentSelectionState,
startingPoint,
) {
if (currentSelectionState.length === requiredSize) {
allCombinations.push([...currentSelectionState]);
return;
}
for (
let numberChoice = startingPoint;
numberChoice <= upperBound;
numberChoice++
) {
currentSelectionState.push(numberChoice);
generateCombinations(
upperBound,
requiredSize,
currentSelectionState,
numberChoice + 1,
);
currentSelectionState.pop();
}
}
generateCombinations(n, k, currentSelection, startValue);
return allCombinations;
};