ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LeetCode 2540. Minimum Common Value
    개발/알고리즘 2025. 4. 9. 16:45
    반응형

    📘 LeetCode 2540. Minimum Common Value

    📝 문제 설명

    두 개의 정렬된 정수 배열 nums1nums2가 주어진다.
    두 배열 모두에 공통으로 존재하는 가장 작은 정수를 반환하라.

    공통된 값이 없으면 -1을 반환한다.

    🔹 제약 사항

    • 두 배열 모두 오름차순 정렬되어 있음
    • 각 배열의 길이는 1 이상 10⁵ 이하

    🔸 예시

    ✅ 예시 1

    Input:

    
    nums1 = \[1, 2, 3\], nums2 = \[2, 4\]
    

    Output:

    
    2
    

    ✅ 예시 2

    Input:

    
    nums1 = \[1, 2, 3, 6\], nums2 = \[4, 5, 6\]
    

    Output:

    
    6
    

    💡 해설

    두 배열이 모두 오름차순 정렬되어 있다는 점을 활용하면,
    투 포인터 방식으로 매우 효율적으로 풀 수 있다.


    🚀 해결 전략

    1. 포인터 i, j를 각각 nums1, nums2의 시작 인덱스로 둔다.
    2. 다음을 반복한다:
      • 만약 nums1[i] == nums2[j] → 공통 원소이므로 반환
      • nums1[i] < nums2[j] → 더 큰 쪽과 맞추기 위해 i++
      • 반대라면 j++
    3. 배열 끝까지 가도록 공통 원소가 없다면 → -1 반환

    이 방식은 시간 복잡도 O(n + m) 으로 매우 효율적이다.


    💻 Java 코드

    class Solution {
        public int getCommon(int[] nums1, int[] nums2) {
            int i = 0, j = 0;
    
            while (i < nums1.length && j < nums2.length) {
                if (nums1[i] == nums2[j]) {
                    return nums1[i];
                } else if (nums1[i] < nums2[j]) {
                    i++;
                } else {
                    j++;
                }
            }
    
            return -1;
        }
    }

    ✅ 포인트 정리

    • 배열이 정렬되어 있을 때는 투 포인터가 최적
    • 교집합의 첫 번째 요소만 구하면 되므로 중간에 바로 return 가능
    • 교집합 전체가 아니라 **"최소 공통값"**만 찾는 문제
    반응형
Designed by Tistory.