AllKombinationsSizeOfK

    0

    0

    /*
      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
    */
    
    class Combinations {
      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])
          return this.combinations
        }
        for (let i = low; i <= high; i++) {
          this.current.push(i)
          this.findCombinations(high, total - 1, i + 1)
          this.current.pop()
        }
        return this.combinations
      }
    }
    
    export { Combinations }
    Codiga Logo
    Codiga Hub
    • Rulesets
    • Playground
    • Snippets
    • Cookbooks
    soc-2 icon

    We are SOC-2 Compliance Certified

    G2 high performer medal

    Codiga – All rights reserved 2022.