넘치게 채우기

[LeetCode] 2540. Minimum Common Value 본문

PS/LeetCode

[LeetCode] 2540. Minimum Common Value

riveroverflow 2024. 3. 9. 10:47
728x90
반응형

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

Leetcode - Minimum Common Value

문제 유형 : 그리디, 투포인터

문제 난이도 : Easy

 

문제

Given two integer arrays nums1 and nums2, sorted in non-decreasing order, return the minimum integer common to both arrays. If there is no common integer amongst nums1 and nums2, return -1.

Note that an integer is said to be common to nums1 and nums2 if both arrays have at least one occurrence of that integer.

 

nums1과 nums2 배열이 비내림차순으로 주어진다. 가장 작은 공통인 수를 반환하시오.

공통인 수가 없으면, -1을 반환하시오.

 

풀이

nums1을 위한 인덱스 i, nums2를 위한 인덱스 j를 만든다.

오름차순으로 되어 있으므로, 두 인덱스 범위가 유효한 동안 다음을 반복한다:

  만약 두 인덱스가 가리키는 수가 같으면, 그 수를 반환한다.

  만약 nums1의 수가 더 작으면, nums1의 인덱스를 다음으로 넘긴다.

  nums2의 수가 더 작으면, nums2의 인덱스를 다음으로 넘긴다.

반복문이 종료되면 없다는 뜻으로, -1을 반환한다.

 

코드

C++

#pragma GCC optimize("03", "unroll-loops");

static const int __ = [](){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    return 0;
}();

class Solution {
public:
    int getCommon(vector<int>& nums1, vector<int>& nums2) {
        const int n = nums1.size();
        const int m = nums2.size();
        int i = 0, j = 0;

        while(i < n && j < m) {
            if(nums1[i] == nums2[j]) return nums1[i];

            if(nums1[i] > nums2[j]) j++;
            else i++;
        }

        return -1;
    }
};
728x90
반응형