4. Median of Two Sorted Arrays
题目描述
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
解题思路,
类似于合并的思想,将两个有序的数组合并即可
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int i = 0,j =0;
List<Integer> list3 = new ArrayList<>();
//汇总两个数组,
while( i < nums1.length && j < nums2.length){
if(nums1[i] < nums2[j]){
list3.add(nums1[i]);
i++;
}else if(nums1[i] == nums2[j]){
list3.add(nums1[i]);
list3.add(nums2[j]);
i++;
j++;
}else{
list3.add(nums2[j]);
j++;
}
}
if(i < nums1.length ){
for(int k = i ; k < nums1.length; k++){
list3.add(nums1[k]);
}
}else if(j < nums2.length ){
for(int k = j ; k < nums2.length; k++){
list3.add(nums2[k]);
}
}
double result = 0.0;
//求出中间值
if(list3.size() % 2 == 0){
int right = ((list3.size()/2)> 0? list3.size()/2:0);
int left = right-1;
//fix me 注意这里这里需要除以2.0
result = (list3.get(left)+list3.get(right))/2.0;
}else{
int index = (list3.size()/2)> 0? list3.size()/2:0;
result = list3.get(index);
}
return result;
}
}