LeetCode-Median of Two Sorted Arrays-计算中值-有序表合并

https://oj.leetcode.com/problems/median-of-two-sorted-arrays/

合并两个有序表,MergeSort的一部分的那个算法。幸运的是stl提供了merge函数。

复习一下这个函数的签名:

merge(first1,end1,first2,end2,destFirst)

这里要注意的是需要实现分配好destFirst的空间,不然是不对的。

另外一个函数签名一样的:

set_union

这个会把重复元素除掉,需要注意。

class Solution {
public:
	double findMedianSortedArrays(int A[], int m, int B[], int n) {
		vector <int> c(m+n);
		vector <int> a(A,A+m);
		vector <int> b(B,B+n);
		
		merge(a.begin(),a.end(),b.begin(),b.end(),c.begin());
		n=m+n;
		if (n%2==0){
			int l=c[n/2-1];
			int r=c[n/2];
			return double(l+r)*0.5;
		}
		else{
			return c[n/2];
		}
	}
};

  

posted @ 2014-10-03 19:38  zombies  阅读(148)  评论(0编辑  收藏  举报