Study Plan For Algorithms - Part39

WindMay發表於2024-09-23

1. 組合
給定兩個整數 n 和 k,返回範圍 [1, n] 中所有可能的 k 個數的組合。

class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        def backtrack(start, path):
            if len(path) == k:
                result.append(path[:])
                return
            for i in range(start, n + 1):
                path.append(i)
                backtrack(i + 1, path)
                path.pop()

        result = []
        backtrack(1, [])
        return result

2. 子集
給定一個整數陣列 nums ,陣列中的元素 互不相同 。返回該陣列所有可能的
子集(冪集)。

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        result = []
        path = []

        def backtracking(nums, startIndex):
            result.append(path[:])  
            for i in range(startIndex, len(nums)):
                path.append(nums[i])
                backtracking(nums, i + 1)
                path.pop()

        backtracking(nums, 0)
        return result

相關文章