Given two arrays, write a function to compute their intersection.
두 배열이 주어지면, 그 중 중복되는 항목들을 반환하는 함수를 작성하라.
풀이 방법
1. 두 배열을 리스트로 변환한다.
2. 두 리스트 중 사이즈가 더 작은 리스트의 길이만큼 반복문을 수행한다.
3. 사이즈가 작은 리스트에 있는 항목을 사이즈가 큰 리스트에서 찾는다.
4. 같은 항목이 존재할 경우, 결과 리스트에 add한다.
5. 리스트 타입인 result를 배열로 변환하여 리턴한다.
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
List<Integer> list1 = Arrays.stream(nums1).boxed().collect(Collectors.toList());
List<Integer> list2 = Arrays.stream(nums2).boxed().collect(Collectors.toList());
if(list1.size() > list2.size())
return solution(list2, list1);
else
return solution(list1, list2);
}
public static int[] solution(List l1, List l2) {
List<Integer> result = new ArrayList<>();
for(int i=0; i<l1.size(); i++) {
int index = l2.indexOf(l1.get(i));
if(index >= 0) {
result.add((Integer) l1.get(i));
l2.remove(index);
}
}
return result.stream().mapToInt(i -> i).toArray();
}
}
시간 & 공간 복잡도 최악
또르르.... 정렬되어있는 경우, 투 포인터를 사용하여 풀 면 될 듯 하다!
'알고리즘 > LeetCode' 카테고리의 다른 글
[JAVA] LeetCode 121 - Best Time to Buy and Sell Stock (0) | 2020.12.02 |
---|---|
[JAVA] LeetCode 191 - Number of 1 Bits (0) | 2020.12.02 |
[JAVA] LeetCode 268 - Missing Number (0) | 2020.11.30 |
[JAVA] LeetCode 387 - First Unique Character in a String (0) | 2020.11.30 |
[JAVA] LeetCode 118 - Pascal's Triangle (0) | 2020.11.27 |