LeetCodeOJ--002(C++ && Python)

Median of Two Sorted Arrays

There are two sorted arrays A and B 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)).

C++版本:

class Solution {

public:
	//快速排序
	void quick_sort(vector<int> &s, int l, int r)
	{
		if (l < r)
		{
			int i = l, j = r, x = s[l];
			while (i < j)
			{
				while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
					j--;  
				if(i < j) 
					s[i++] = s[j];

				while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
					i++;  
				if(i < j) 
					s[j--] = s[i];
			}
			s[i] = x;
			quick_sort(s, l, i - 1); // 递归调用 
			quick_sort(s, i + 1, r);
		}
	}

public:
	double findMedianSortedArrays(int A[], int m, int B[], int n) 
	{
		if (A == NULL || B == NULL || (m <= 0 && n <= 0))
		{
			return 0.0;
		}

		vector<int> C;
		for (size_t i = 0; i < m + n; i++)
		{
			if (i < m)
			{
				C.push_back(A[i]);
			} 
			else
			{
				C.push_back(B[i-m]);
			}
		}

		quick_sort(C, 0, m+n-1);
		
		double Median = 0.0;

		if ((m+n)&0x01 == 1)
		{
			Median = 1.0*C[(m+n)/2];
		} 
		else
		{
			Median = 1.0*(C[(m+n-1)/2] + C[(m+n)/2])/2;
		}
		return Median;	
	}
};

Python版本:

class Solution:
    # @return a float
    def findMedianSortedArrays(self, A, B):
        L = A + B
        L.sort()
        l = len(L)
        
        Median = 0.0
        
        if l == 0:
            return Median
        else:
            if l*0x01 == 1:
                Median = 1.0*L[l/2]
            else:
                Median = (L[(l-1)/2]+L[l/2])/2.0
            return Median



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Digital2Slave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值