숫자 집합이 있다고 가정합니다. 우리는 그 집합의 가능한 모든 부분집합을 생성해야 합니다. 이를 전원 세트라고도 합니다. 따라서 집합이 [1,2,3]과 같으면 거듭제곱 집합은 [[], [1], [2], [3], [1,2], [1,3], [2 ,3], [1,2,3]]
단계를 살펴보겠습니다 -
- 재귀적 접근 방식을 사용하여 이 문제를 해결할 것입니다. 따라서 재귀 메서드 이름이 solve()라고 하고 숫자(nums), 임시 집합(temp), res 및 index 집합을 사용하는 경우
- solve() 함수는 아래와 같이 작동합니다 -
- index =length of nums인 경우 temp와 동일한 목록을 만들고 res에 삽입하고 반환
- 온도[색인] :=0
- 해결(숫자, 온도, 해상도, 인덱스 + 1)
- 온도[색인] :=1
- 해결(숫자, 온도, 해상도, 인덱스 + 1)
- 주요 기능은 아래와 같습니다 -
- res :=빈 목록
- 숫자와 같은 크기의 임시 목록을 만들고 0으로 채웁니다.
- 해결(nums, temp, res, 0) 호출
- main_res :=빈 목록
- temp_res의 모든 목록에 대해
- temp :=빈 목록
- for i :=0에서 목록의 길이까지
- list[i] =1이면 temp에 nums[i]를 삽입합니다.
- main_res에 temp 삽입
- 기본 결과 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution(object):def 하위 집합(self, nums):temp_result =[] self.subsets_util(nums,[0 for i in range(len(nums))],temp_result,0) main_result =[] for temp_result의 목록:temp =[] for i in range(len(lists)):if 목록[i] ==1:temp.append(nums[i]) main_result.append(temp) return main_result def subsets_util(self, nums,temp,result,index):index ==len(nums):result.append([i for i in temp]) #print(temp) return temp[index] =0 self.subsets_util(nums,temp, 결과, 색인 + 1) 임시 [색인] =1 self.subsets_util(숫자, 임시, 결과, 색인 + 1)ob1 =솔루션()print(ob1.subsets([1,2,3,4]))사전>입력
[1,2,3,4]출력
[[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [ 1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4] ]