Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 두 배열 II의 교차점

<시간/>

두 개의 배열 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]