題目鏈接:https://leetcode.com/problems/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)).
解題思路:將兩個有序數組合併爲一個,設置一個 Map<Integer, Integer>,key值爲序號,value值爲數值,m+n個數的中位數要分兩種情況討論:
1、m+n爲奇數:則(m+n)/2即爲其中位數
2、m+n爲偶數:則(((m+n)/2-1)+(m+n)/2)/2爲中位數
示例代碼如下:
public class Solution
{
public static double findMedianSortedArrays(int[] nums1, int[] nums2)
{
int m=nums1.length;
int n=nums2.length;
int index; //中位數的位置
//m+n爲奇數
double result;
if(m==1&&n==0)
return nums1[0];
if(m==0&&n==1)
return nums2[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]);
i++;
k++;
}
else
{
map.put(k,nums2[j]);
j++;
k++;
}
}
while(i<m)
{
map.put(k,nums1[i]);
i++;
k++;
}
while(j<n)
{
map.put(k,nums2[j]);
k++;
j++;
}
//m+n爲奇數
if((m+n)%2==1)
{
result=map.get((m+n)/2);
return result;
}
else
{
result=(double)(map.get((m+n)/2-1)+map.get((m+n)/2))/2;
return result;
}
}
}