Leetcode 77 Combinations

Given two integers n and k, return all possible combinations of k numbers out of the range [1, n].

You may return the answer in any order.

Input: n = 4, k = 2
Output:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]
Input: n = 1, k = 1
Output: [[1]]
  • Soruda bize n ve k değerleri veriliyor.Bizden istenen 1-n arasındaki sayıların k’li kombinasyonu.
  • Bu soruda 90. sorudaki çözüm şeklini izleyebiliriz.
  • Tek fark 90. soruda verilen listenin uzunluğu kadar bir kombinasyon ararken bu sefer k uzunluğunda bir kombinasyon arayacağız ve bulduğumuzda sonuç listesine ekleyeceğiz.
    def combine(self, n: int, k: int) -> List[List[int]]:
        def helper(nums, k, results, combination, start):
            if len(combination) == k:
                results.append(list(combination))
                return
        
            for i in range(start, len(nums)):
                num = nums[i]
            
                combination.append(num)
                helper(nums, k, results, combination, i + 1)
                combination.pop()
                
        results = []
        
        nums = [i for i in range(1, n + 1)]
        
        helper(nums, k, results, [], 0)
                
        return results