有序的两个数组在满足其中一个数组的所有数都小于另外一个数组的情况下的整体的中位数

74 篇文章 1 订阅

简述

给定两个有序数组,且其中一个有序数组的最大值小于等于另外一个数组的最小值。

得到这两个数组整合起来的数组的中位数。

代码

#include<iostream>
using namespace std;
#include<vector>

double findMedianTwoSortArrays(vector<int>& nums1, vector<int>& nums2) {
	// assert "nums1[n] <= nums2[0]"
	int n = nums1.size(), m = nums2.size();
	if ((n + m) % 2 == 1) {
		int mid = (n + m) / 2;
		if (n <= mid) {
			return nums2[mid - n];
		}
		else return nums1[mid];
	}
	else {
		int m1 = (n + m) / 2 - 1, m2 = (n + m) / 2 ;
		int n1, n2;
		if (n <= m1) {
			n1 = nums2[m1 - n];
		}
		else n1 = nums1[m1];
		if (n <= m2) {
			n2 = nums2[m2 - n];
		}
		else n2 = nums1[m2];
		cout << n1 << " " << n2 << endl;
		return (n1 + n2) / 2.;
	}
}


int main() {
	vector<int> v1({ 1, }), v2({3, 4,});
	cout << findMedianTwoSortArrays(v1, v2) << endl;
	system("pause");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

肥宅_Sean

公众号“肥宅Sean”欢迎关注

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

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

打赏作者

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

抵扣说明:

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

余额充值