코린이의 소소한 공부노트

[LeetCode/Easy] 2540. Minimum Common Value 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2540. Minimum Common Value

무지맘 2023. 5. 6. 01:29

1. Input

1) int[] nums1

2) int[] nums2

 

2. Output

1) nums1num2에 모두 들어있는 요소 중 가장 작은 것을 반환

2) 만약 공통 요소가 없다면 -1을 반환

 

3. Constraint

1) 1 <= nums1.length, nums2.length <= 10^5

2) 1 <= nums1[i], nums2[j] <= 10^9

3) nums1nums2는 오름차순으로 정렬되어있다.

 

4. Example

Input: nums1 = [1,2,3], nums2 = [2,4] -> Output: 2

Input: nums1 = [1,2,3,6], nums2 = [2,3,4,5] -> Output: 2

 

5. Code

1) 첫 코드(2023/05/06)

class Solution {
    public int getCommon(int[] nums1, int[] nums2) {
        HashSet<Integer> s1 = new HashSet<>();
        HashSet<Integer> s2 = new HashSet<>();
        for(int i : nums1)
            s1.add(i);
        for(int i : nums2)
            s2.add(i);
        s1.retainAll(s2);
        List<Integer> list = new ArrayList<Integer>(s1);
        if(list.size()==0)
            return -1;
        list.sort(Comparator.naturalOrder());
        return list.get(0);
    }
}

2) 앞에서부터 순서대로 찾게 만든 코드(2023/05/06)

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

- 성능이 훨~~씬 좋아졌다.