Algorithm

[java] Median of Two Sorted Arrays

KOOCCI 2022. 6. 23. 23:41

[참고문제] : https://leetcode.com/problems/median-of-two-sorted-arrays/

 

Median of Two Sorted Arrays - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


문제 풀이

생각의 흐름 - 이미 정렬되어 있다.

이미 정렬이 되어 있으니, 각각의 배열에서 계속 더 작은 수를 확인한다.

생각의 흐름 - 중앙값 까지만 확인해도 된다.

어짜피 필요한 건 중앙값이고, 중앙값까지만 확인하면 계산할 수 있다.

생각의 흐름 - 한쪽만 완료될 수 있다.

작은 수가 한쪽에만 있을 수도 있다.

이미 끝의 인덱스까지 확인했으면 다른 한 쪽만 확인하자.

 

public double findMedianSortedArrays(int[] nums1, int[] nums2) {
    int n = nums1.length;
    int m = nums2.length;
    int len = n + m;
    int nIndex = 0;
    int mIndex = 0;
    double result = 0.0;
    List<Integer> arr = new ArrayList<>();
    while(nIndex <= n && mIndex <= m) {
        if(nIndex + mIndex == (len / 2) + 1) {
            if(len % 2 == 0) {
                result = (arr.get((len / 2) - 1) + (double)arr.get((len / 2))) / 2;
            } else {
                result = arr.get((len / 2));
            }
            break;
        } else {

            if(nIndex != n && mIndex == m) {
                arr.add(nums1[nIndex]);
                nIndex ++;
            }

            else if(nIndex == n && mIndex != m) {
                arr.add(nums2[mIndex]);
                mIndex ++;
            } else {
                if(nums1[nIndex] <= nums2[mIndex]) {
                    arr.add(nums1[nIndex]);
                    nIndex ++;
                } else {
                    arr.add(nums2[mIndex]);
                    mIndex ++;
                }
            }
        }
    }
    return result;
}

'Algorithm' 카테고리의 다른 글

[java] Container With Most Water  (0) 2022.07.02
[java] Rotate Array  (0) 2022.06.24
[java] Longest Substring Without Repeating Characters  (0) 2022.06.23
[java] jump game 2  (0) 2022.06.22
[Python / C++] 스택 수열  (0) 2019.05.23