두 개의 배열 A와 B가 있다고 가정하고 이 배열에는 요소가 거의 없습니다. 우리는 그것들의 교차점을 찾아야 합니다. 따라서 A =[1, 4, 5, 3, 6]이고 B =[2, 3, 5, 7, 9]이면 교집합은 [3, 5]
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 배열 A와 B 두 개 사용
- A의 길이가 B의 길이보다 작으면 교환
- 배열의 요소 빈도를 계산하고 m에 저장
- B의 각 요소 e에 대해 e가 m에 있고 빈도가 0이 아닌 경우
- 주파수 m[e] 1 감소
- 결과 배열에 e 삽입
- 결과 배열 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
class Solution(object): def intersect(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ m = {} if len(nums1)<len(nums2): nums1,nums2 = nums2,nums1 for i in nums1: if i not in m: m[i] = 1 else: m[i]+=1 result = [] for i in nums2: if i in m and m[i]: m[i]-=1 result.append(i) return result ob1 = Solution() print(ob1.intersect([1,4,5,3,6], [2,3,5,7,9]))
입력
[1,4,5,3,6] [2,3,5,7,9]
출력
[3,5]