LeetCode 문제 풀이 350 Python 두 배열 의 교 집합 II

1455 단어 LeetCode
제목:
두 개의 배열 을 정 하고 하나의 함 수 를 만들어 서 그들의 교 집합 을 계산 합 니 다.
예시 1:
  : nums1 = [1,2,2,1], nums2 = [2,2]
  : [2,2]

예시 2:
  : nums1 = [4,9,5], nums2 = [9,4,9,8,4]
  : [4,9]

설명:
  •    출력 결과 에 있 는 모든 요소 가 나타 나 는 횟수 는 요소 가 두 배열 에 나타 나 는 횟수 와 일치 해 야 합 니 다.
  •    우 리 는 출력 결과 의 순 서 를 고려 하지 않 아 도 된다.

  • 진급:
  • 주어진 배열 이 정렬 되 어 있다 면?당신 은 어떻게 당신 의 알고리즘 을 최적화 할 것 입 니까?

  • 하면, 만약, 만약... nums1 크기 nums2 많이 작 아 요. 어떤 방법 이 더 좋아요?
    하면, 만약, 만약... nums2 디스크 에 저 장 된 요 소 는 디스크 메모리 에 한계 가 있 습 니 다. 그리고 모든 요 소 를 메모리 에 한 번 에 불 러 올 수 없습니다. 어떻게 해 야 합 니까?
    제 생각 은 지난 문 제 를 본 떠 set 로 교 집합 을 구 한 후에 count 로 교 집합 에서 모든 요소 가 두 배열 에 나타 난 횟수 를 계산 하고 작은 횟수 로 이 요 소 를 복사 하 는 것 입 니 다.
    남 의 답안 을 보고 정신 을 차 려 라.이러한 외 장 기능 함 수 를 사용 할 필요 가 없다.교 집합 에 하 나 를 추가 하면 nums 2 에서 하 나 를 삭제 하면 한 번 에 결 과 를 얻 을 수 있 습 니 다.
            https://blog.csdn.net/zhenghaitian/article/details/80896392         https://blog.csdn.net/IT_job/article/details/80410686         https://blog.csdn.net/xiaoxiaoley/article/details/79095045
    class Solution(object):
        def intersect(self, nums1, nums2):
            """
            :type nums1: List[int]
            :type nums2: List[int]
            :rtype: List[int]
    
            """
            res = []
            for k in nums1:
                if k in nums2:
                    res.append(k)
                    nums2.remove(k)
            return res

    좋은 웹페이지 즐겨찾기