[LeetCode] 0039. 조합합

조합합

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간

 


주어진 배열 별개의 정수 후보자 그리고 목표 정수 목표, 반품 모두의 목록 독특한 조합 ~의 후보자 선택한 숫자의 합은 다음과 같습니다. 목표. 다음의 조합을 반환할 수 있습니다. 어떤 주문이든.

그만큼 같은 번호는 다음 중에서 선택할 수 있습니다. 후보자 안 횟수 무제한. 선택한 숫자 중 하나 이상의 빈도가 다른 경우 두 가지 조합은 고유합니다.

테스트 케이스는 총합이 다음과 같은 고유 조합의 수와 같이 생성됩니다. 목표 보다 작다 150 주어진 입력에 대한 조합.

예시 1:

입력: 후보 = [2,3,6,7], 대상 = 7
산출: [[2,2,3],[7]]
설명:
2와 3은 후보이고 2 + 2 + 3 = 7입니다. 2는 여러 번 사용될 수 있으며 7은 후보이고 7 = 7입니다. 이는 유일한 두 가지 조합입니다.

예 2:

입력: 후보 = [2,3,5], 대상 = 8
산출: [[2,2,2,2],[2,3,3],[3,5]]

예시 3:

입력: 후보 = [2], 대상 = 1
산출: []

제약:

  • 1 <= 후보. 길이 <= 30
  • 2 <= 후보자[i] <= 40
  • 모든 요소 후보자 ~이다 별개의.
  • 1 <= 대상 <= 40

파이썬

				
					입력에서 가져오기 목록 클래스 솔루션: def CombinationSum(self, Candidate: List[int], target: int) -> List[List[int]]: result = [] def backtrack(remain: int, Comb: List[int] , start: int): 남아 있는 경우 == 0: result.append(list(comb)) return elif 남아 < 0: return for i in range(start, len(candidates)): Comb.append(candidates[i]) backtrack(remain - 후보자[i], Comb, i) Comb.pop() backtrack(target, [], 0) 반환 결과
				
			
ko_KR한국어