欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode 4: 寻找两个有序数组的中位数(Median of Two Sorted Arrays)解法汇总

程序员文章站 2022-05-14 20:19:45
...

文章目录


我的C++代码同步更新在我的Github

我的解法

这是一道很简单的两个有序向量的二路归并问题。直接上代码。

C++

class Solution {
public:
	double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
		double res;
		vector<int> merged;
		for (int i = 0, j = 0; i < nums1.size() || j < nums2.size();) {
			if ( i < nums1.size() && (j >= nums2.size() || nums1[i] < nums2[j]) ) {
				merged.push_back(nums1[i++]);
			}
			if ( j < nums2.size() && (i >= nums1.size() || nums1[i] >= nums2[j]) ) {
				merged.push_back(nums2[j++]);
			}
		}
		if (merged.size() % 2) {
			res = static_cast<double>(merged[merged.size() >> 1]);
		}
		else {
			res = static_cast<double>(merged[merged.size() >> 1] + merged[(merged.size() >> 1) - 1]) / 2;
		}

		return res;
	}
};