2540. Minimum Common Value

양성준·2025년 4월 6일

코딩테스트

목록 보기
8/102

문제

https://leetcode.com/problems/minimum-common-value/description/

정답

1. 처음 풀이(two pointers)

class Solution {
    public int getCommon(int[] nums1, int[] nums2) {
        int lt = 0;
        int rt = 0;
        while(lt < nums1.length && rt < nums2.length) {
            if(nums1[lt] < nums2[rt]) {
                lt++;
            } else if(nums1[lt] > nums2[rt]) {
                rt++;
            } else {
                return nums1[lt]; // 같으니까 아무거나 반환해도됨
            }
        }
        return -1; 
    }
}
  • 두 배열을 비교해가며, 조건이 아닌 경우엔 둘 중 하나의 포인터를 이동 => two pointers 사용
  • 두 배열이 이미 오름차순 정렬이 되어있으므로, 비교를 해가면서 arr1의 값이 더 작다면 arr1의 포인터를 이동 / arr2의 값이 더 작다면 arr2의 포인터를 이동
    => 가장 작은 값을 구해야하므로, arr1의 포인터 값과 arr2의 포인터 값이 같아질 때 해당 값 반환
    • 포인터가 둘 중 하나라도 범위를 벗어나면 가능한 값이 없는 것이므로 -1 반환
  • 시간복잡도 O(N)의 풀이
profile
백엔드 개발자

0개의 댓글