(LeetCode) 350. Intersection of Two Arrays II

Intersection of Two Arrays II

  • Explore : Interview > Top Interveiw Questions > Easy Collection
  • 분류 : Array
  • 난이도 : Easy

Problem

Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must appear as many times as it shows in both arrays and you may return the result in any order.

Example 1

1
2
Input: nums1 = [1,2,2,1], nums2 = [2,2]
Output: [2,2]

Example 2

1
2
3
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
Output: [4,9]
Explanation: [9,4] is also accepted.

Constraints

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000

Solution

Exapnder
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
fun intersect(nums1: IntArray, nums2: IntArray): IntArray {
val list1 = nums1.toMutableList()
val list2 = nums2.toMutableList()
val result = mutableListOf<Int>()

for (i in list2.indices) {
if (list1.contains(list2[i])) {
result.add(list2[i])
list1.removeAt(list1.indexOf(list2[i]))
}
}
return result.toIntArray()
}
}

Point of Thinking

  • 교집합만 구한다면 intersect 메서드를 실행하면 되겠지만, Example 1처럼 중복되는 것도 카운트 해줘야한다.
    • intersect는 Set으로 반환되기 때문에 이 문제에서는 활용이 불가능하다.