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
思想:合并+随机访问,属于简答的模拟题。
知识点:Map容器。
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
//1.将nums1和nums2合并在一起
int m=nums1.length;
int n=nums2.length;
//2.特判,一个元素
if(m==0&&n==1)
return nums2[0];
if(m==1&&n==0)
return nums1[0];
Map<Integer,Integer>map=new TreeMap<Integer,Integer>();
int i=0,j=0,k=0;
while(i<m&&j<n){
if(nums1[i]<=nums2[j]){
map.put(k,nums1[i]);
k++;
i++;
}else{
map.put(k,nums2[j]);
k++;
j++;
}
}
//&& 为假时
while(i<m){
map.put(k,nums1[i]);
k++;
i++;
}
while(j<n){
map.put(k,nums2[j]);
k++;
j++;
}
if((m+n)%2==0){//偶
return (double)(map.get((m+n)/2-1)+map.get((m+n)/2))/2;
}else{
return map.get((m+n)/2);
}
}
}