39. La combinación de la suma de la suma combinada de 40 && 2

Dada una matriz candidatos de elementos que no se repiten y un objetivo de número de destino, se pueden encontrar todos los candidatos a los números de destino y combinaciones de los mismos.

un número ilimitado de candidatos pueden ser seleccionados se repite.

Descripción:

Todas las cifras (incluido el blanco) son números enteros positivos.
Conjunto de soluciones no puede contener combinaciones de duplicados de los mismos. 

class Solution(object):
    def combinationSum(self, candidates, target):
        """
        :type candidates: List[int]
        :type target: int
        :rtype: List[List[int]]
        """
        self.res = []
        def helper(nums,tmp,i):
            if tmp == target:
                self.res.append(nums)
                return 
            if tmp>target:
                return 
            for j in range(i,len(candidates)):
                helper(nums+[candidates[j]],tmp+candidates[j],j)
        helper([],0,0)
        return self.res

Teniendo en cuenta una serie de candidatos y el objetivo número uno meta, usted puede encontrar todos los candidatos a los números de destino y combinaciones.

Cada número de candidatos utilizan sólo una vez en cada combinación.

Descripción:

Todas las cifras (incluyendo el número de destino) son números enteros positivos.
Conjunto de soluciones no puede contener combinaciones de duplicados de los mismos.

backtracking

class Solution:
    def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
        if not candidates:
            return []
        candidates.sort()
        n = len(candidates)
        res = []
        
        def backtrack(i, tmp_sum, tmp_list):
            if tmp_sum == target:
                res.append(tmp_list)
                return 
            for j in range(i, n):
                if tmp_sum + candidates[j]  > target : break
                if j > i and candidates[j] == candidates[j-1]:continue
                backtrack(j + 1, tmp_sum + candidates[j], tmp_list + [candidates[j]])
        backtrack(0, 0, [])    
        return res

 

Publicados 200 artículos originales · ganado elogios 17 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_36328915/article/details/104589584
Recomendado
Clasificación