반응형
4. Median of Two Sorted Arrays (Hard)
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
You may assume nums1 and nums2 cannot be both empty.
Example 1:
nums1 = [1, 3]
nums2 = [2]
The median is 2.0
Example 2:
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
Java Solution
class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int fullLength = nums1.length + nums2.length; int midCount = 2 - (fullLength % 2); int cnt = fullLength >> 1; double mid = 0; int i = 0; int j = 0; while (cnt >= 0) { int tmpMid; if (i < nums1.length && j < nums2.length) { tmpMid = (nums1[i] > nums2[j]) ? nums2[j++] : nums1[i++]; } else { tmpMid = (i >= nums1.length) ? nums2[j++] : nums1[i++]; } if (cnt < midCount) { mid += tmpMid; } cnt--; } return mid / midCount; } }
Kotlin Solution
class Solution { fun findMedianSortedArrays(nums1: IntArray, nums2: IntArray): Double { val fullLength = nums1.size + nums2.size val midCount = 2 - fullLength % 2 var cnt = fullLength shr 1 var mid = 0.0 var i = 0 var j = 0 while (cnt >= 0) { val tmpMid: Int = if (i < nums1.size && j < nums2.size) { if (nums1[i] > nums2[j]) nums2[j++] else nums1[i++] } else { if (i >= nums1.size) nums2[j++] else nums1[i++] } if (cnt < midCount) { mid += tmpMid.toDouble() } cnt-- } return mid / midCount } }
이 외에도 다양한 문제들의 해답 코드를 깃헙 저장소에서 확인할 수 있습니다. (Java, Kotlin)
반응형
광고
광고
'Algorithm' 카테고리의 다른 글
[Leetcode] 3번 - Longest Substring Without Repeating Characters (Java, Kotlin) (0) | 2020.03.28 |
---|---|
[Leetcode] 2번 - Add Two Numbers (Java, Kotlin) (0) | 2020.03.27 |
[LeetCode] 1번 - Two Sum (Java, Kotlin) (0) | 2020.03.26 |
알고리즘 사이트 비교 및 추천 (4) | 2019.11.10 |
[백 트래킹][백준 1948번] N과 M(1) - Java (0) | 2019.10.03 |
준비된 개발자Share to learn,
Learn to share.