mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-15 02:33:35 +08:00
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
/*
|
|
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 froms 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
|
|
*/
|
|
|
|
class Combinations {
|
|
constructor (n, k) {
|
|
this.n = n
|
|
this.k = k
|
|
this.combinationArray = [] // will be used for storing current combination
|
|
}
|
|
|
|
findCombinations (high = this.n, total = this.k, low = 1) {
|
|
if (total === 0) {
|
|
console.log(this.combinationArray)
|
|
return
|
|
}
|
|
for (let i = low; i <= high; i++) {
|
|
this.combinationArray.push(i)
|
|
this.findCombinations(high, total - 1, i + 1)
|
|
this.combinationArray.pop()
|
|
}
|
|
}
|
|
}
|
|
|
|
export { Combinations }
|