虽然题目很简单,但是很开心,纪念一下。
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int len1 = nums1.size();
int len2 = nums2.size();
int sum = len1 + len2;
int median = (len1 + len2 + 1) / 2;
int before = 0;
int middle = 0;
int i,j;
if(sum & 1){
median = (len1 + len2 + 1) / 2;
}else{
median = (len1 + len2) / 2 + 1;
//cout<<median<<endl;
}
for(i=0,j=0; i<len1 && j<len2;){
if(nums1[i] < nums2[j]){
//cout << nums1[i] << endl;
before = middle;
middle = nums1[i];
i++;
}else{
//cout << nums2[j] << endl;
before = middle;
middle = nums2[j];
j++;
}
if(i+j == median){
break;
}
}
if(i+j < median){
for(;j<len2;){
before = middle;
middle = nums2[j];
j++;
if(i+j == median){
break;
}
}
for(;i<len1;){
before = middle;
middle = nums1[i];
i++;
if(i+j == median){
break;
}
}
}
if(sum & 1){
return middle;
//cout<<middle<<endl;
}else{
return (middle+before)/2.0;
//cout << (middle+before)/2.0<< endl;
//cout << before << endl;
}
}
};