4. Median Of Two Sorted Arrays¶
Difficulty: Hard
LeetCode Problem View on GitHub
4. Median of Two Sorted Arrays
Hard
Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.
The overall run time complexity should be O(log (m+n)).
Example 1:
Input: nums1 = [1,3], nums2 = [2] Output: 2.00000 Explanation: merged array = [1,2,3] and median is 2.
Example 2:
Input: nums1 = [1,2], nums2 = [3,4] Output: 2.50000 Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
Constraints:
nums1.length == mnums2.length == n0 <= m <= 10000 <= n <= 10001 <= m + n <= 2000-106 <= nums1[i], nums2[i] <= 106
Solution¶
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int n = nums1.length, m = nums2.length;
int first = -1, second = -1;
int i = 0, j = 0;
int count = -1;
while (i < n && j < m) {
if (nums1[i] <= nums2[j]) {
count++;
if (count == (n + m) / 2) {
first = nums1[i];
}
else if (count == (n + m) / 2 - 1) {
second = nums1[i];
}
i++;
}
else {
count++;
if (count == (n + m) / 2) {
first = nums2[j];
}
else if (count == (n + m) / 2 - 1) {
second = nums2[j];
}
j++;
}
}
while (i < n) {
count++;
if (count == (n + m) / 2) {
first = nums1[i];
}
else if (count == (n + m) / 2 - 1) {
second = nums1[i];
}
i++;
}
while (j < m) {
count++;
if (count == (n + m) / 2) {
first = nums2[j];
}
else if (count == (n + m) / 2 - 1) {
second = nums2[j];
}
j++;
}
if ((n + m) % 2 == 0) {
return ((first * 1.0 + second * 1.0) / 2);
}
return first;
}
}
Complexity Analysis¶
- Time Complexity:
O(?) - Space Complexity:
O(?)
Approach¶
Detailed explanation of the approach will be added here