TIL
[코테연습] 350. Intersection of Two Arrays II
크라00
2024. 7. 2. 09:58
- 배열문제
https://leetcode.com/problems/intersection-of-two-arrays-ii/?envType=daily-question&envId=2024-07-02
- 문제분석
1. 2개의 배열이 주어진다.
2. 2개의 배열이 겹치는 숫자를 배열에 담아 리턴하시오
- 문제풀이
1. Map<Integer, Integer> map 을 초기화한다.
2. 첫번째 배열에 있는 숫자를 모두 담는다.
2-1. key 는 배열의 숫자로, value 는 숫자의 갯수로 저장한다.
3. 두번째 배열을 반복문으로 돌린다.
3-1. map 을 탐색하면서, key 값이 있을 경우에 List 에 해당 숫자를 담는다.
3-2. value 값은 1개 낮춘다.
3-3. map.get(key) 의 value 가 0 보다 클때만, List 에 담는다.
4. List 를 리턴해준다.
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums1.length; i++) {
map.put(nums1[i], map.getOrDefault(nums1[i], 0)+1);
}
List<Integer> list = new ArrayList<>();
for (int i = 0; i < nums2.length; i++) {
if (map.get(nums2[i]) != null){
if (map.get(nums2[i]) > 0) {
map.put(nums2[i], map.get(nums2[i])-1);
list.add(nums2[i]);
}
}
}
int[] rs = new int[list.size()];
int index = 0;
for (int num : list) {
rs[index++] = num;
}
return rs;
}
}