題目要求是求出兩個已排序的數組的中位數,如果兩個數組的總的個數爲偶數,則返回中間兩個數字的平均數。
思路:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
if (nums1.size()==0 && nums2.size()==0)
return -1;
int a_size = nums1.size();
int b_size = nums2.size();
int min_pos = (a_size+b_size)%2 ? (a_size+b_size+1)/2 : 1+(a_size+b_size)/2;
int result1, result2;
result1 = result2 = 0;
int flag_a, flag_b;
flag_a = flag_b = 0;
int count = 0;
for (int i=0; i<a_size+b_size && flag_a<a_size && flag_b<b_size; i++)
{
if (count == min_pos)
break;
if (nums1[flag_a] <= nums2[flag_b])
{
result2 = result1;
result1 = nums1[flag_a];
count++;
flag_a++;
} else {
result2 = result1;
result1 = nums2[flag_b];
count++;
flag_b++;
}
}
while (flag_a < a_size)
{
if (count == min_pos)
break;
result2 = result1;
result1 = nums1[flag_a];
count++;
flag_a++;
}
while (flag_b < b_size)
{
if (count == min_pos)
break;
result2 = result1;
result1 = nums2[flag_b];
count++;
flag_b++;
}
return (a_size+b_size)%2 ? result1*1.0 : (result1+result2)/2.0;
}