forked from TheAlgorithms/JavaScript
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAllCombinationsOfSizeK.js
More file actions
Latest commit
46 lines (38 loc) · 1.35 KB
/
Copy pathAllCombinationsOfSizeK.js
File metadata and controls
46 lines (38 loc) · 1.35 KB
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
41
42
43
44
45
46
/*
Problem: Given two numbers, n and k, make all unique combinations of k numbers from 1 to n and in sorted order
What is combinations?
- Combinations is selecting items from a collections without considering order of selection
Example:
- We have an apple, a banana, and a jackfruit
- We have three objects, and need to choose two items, then combinations will be
1. Apple & Banana
2. Apple & Jackfruit
3. Banana & Jackfruit
To read more about combinations, you can visit the following link:
- https://betterexplained.com/articles/easy-permutations-and-combinations/
Solution:
- We will be using backtracking to solve this questions
- Take one element, and make all them combinations for k-1 elements
- Once we get all combinations of that element, pop it and do same for next element
*/
classCombinations{
constructor(n,k){
this.n=n
this.k=k
this.current=[]// will be used for storing current combination
this.combinations=[]
}
findCombinations(high=this.n,total=this.k,low=1){
if(total===0){
this.combinations.push([...this.current])
returnthis.combinations
}
for(leti=low;i<=high;i++){
this.current.push(i)
this.findCombinations(high,total-1,i+1)
this.current.pop()
}
returnthis.combinations
}
}
export{Combinations}