您的位置:首页 > 其它

LeetCode-Median of Two Sorted Arrays

2013-07-06 21:05 369 查看
class Solution {
public:
//Median of Two Sorted Arrays
double findMedianSortedArrays(int A[], int m, int B[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (m == 0)
{
int mid = n / 2;
if (n % 2 == 1)
{
return (double)B[mid];
}
else
{
return (double)(B[mid] + B[mid - 1]) / 2;
}
}
if (n == 0)
{
int mid = m / 2;
if (m % 2 == 1)
{
return (double)A[mid];
}
else
{
return (double)(A[mid] + A[mid - 1]) / 2;
}

}
int maxInt = 2147483647;
int i = 0,j = 0;
int medianA = A[0];
int medianB = B[0];
int cnt  = (m + n) / 2;
while (cnt--)
{
if (medianA < medianB)
{
if (i < m - 1)
{
medianA = A[++i];
}
else
{
medianA = maxInt;
i = m;
}
}
else
{
if (j < n - 1)
{
medianB = B[++j];
}
else
{
medianB = maxInt;
j = n;
}
}
}
int rightMedian = medianA < medianB ? medianA : medianB;
if ((m + n) % 2 == 1)
{
return (double)rightMedian;
}
else
{
int leftMedian = 0;
if (i > 0 && j > 0)
{
leftMedian = A[i - 1] > B[j - 1] ? A[i - 1] : B[j - 1];
}
else if (i > 0)
{
leftMedian = A[i - 1];
}
else if (j > 0)
{
leftMedian = B[j - 1];
}
return (double)(leftMedian + rightMedian) / 2;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: