class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int n = nums1.size() + nums2.size(), i = 0, j = 0;
while(i+j != (n-1)/2 && i < nums1.size() && j < nums2.size())
{
if(nums1[i] < nums2[j])
i++;
else
j++;
}
if(i+j != (n-1)/2 ||i == nums1.size() || j == nums2.size())
{
if(i == nums1.size())
{
while(i+j != (n-1)/2)
j++;
return n%2 == 0 ? double(nums2[j]+nums2[j+1])/2 : nums2[j];
}
else
{
while(i+j != (n-1)/2)
i++;
return n%2 == 0 ? double(nums1[i]+nums1[i+1])/2 : nums1[i];
}
}
if(n%2 == 1)
return min(nums1[i], nums2[j]);
else
return double(((j+1) < nums2.size() ? min(nums2[j+1],nums1[i]) : nums1[i]) + ((i+1) < nums1.size() ? min(nums2[j],nums1[i+1]) : nums2[j]))/2;
}
};