Leetcode Java Median of Two Sorted Arrays

업데이트:

문제

Link

코드

class Solution {

  public double findMedianSortedArrays(int[] nums1, int[] nums2) {
    int[] nums = mergeNums(nums1, nums2);
    int mid = nums.length / 2;
    return nums.length % 2 == 0 ? (double) (nums[mid - 1] + nums[mid]) / 2 : nums[mid];
  }
  
  private int[] mergeNums(int[] nums1, int[] nums2) {
    int[] mergeNums = new int[nums1.length + nums2.length];
    int idx1 = 0;
    int idx2 = 0;
    for (int idx = 0; idx < mergeNums.length; idx++) {
      if (idx1 < nums1.length && (idx2 >= nums2.length || nums1[idx1] <= nums2[idx2])) {
        mergeNums[idx] = nums1[idx1];
        idx1++;
      } else if (idx2 < nums2.length && (idx1 >= nums1.length || nums1[idx1] > nums2[idx2])) {
        mergeNums[idx] = nums2[idx2];
        idx2++;
      }
    }
    return mergeNums;
  }

}

결과

Link

설명

  1. 주어진 두 배열의 중앙값을 찾기 위해서 하나의 배열로 합친다.
    • 두 배열은 오름차순 정렬된 배열이므로, 각 배열의 숫자를 비교하여 두 배열의 합쳐진 배열인 변수인 mergeNums에 추가하여야 한다.
    • 각 배열의 마지막 값을 mergeNums에 추가한 경우(배열의 idx값이 length와 동일하거나 클 경우), 해당 배열은 무시하고 다른 배열의 값을 계속 추가하도록 한다.
  2. 합친 배열의 중앙값을 문제의 결과로 반환한다.
    • 배열의 크기가 홀수일 경우, 가운데 있는 값이 중앙값이다.
    • 배열의 크가기 짝수일 경우, 가운데 있는 두 값의 평균이 중앙값이다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기