LeetCode | 4. Median of Two Sorted Arrays

本文介绍了一个算法问题,即找到两个已排序数组的中位数,整体运行复杂度为O(log(m+n))。通过合并两个数组并查找中位数的方法,展示了如何解决这一问题。例子包括了不同长度的数组情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

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

You may assume nums1 and nums2 cannot be both empty.

Example 1:

nums1 = [1, 3]
nums2 = [2]

The median is 2.0

Example 2:

nums1 = [1, 2]
nums2 = [3, 4]

The median is (2 + 3)/2 = 2.5

代码:

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int n1 = nums1.size();
		int n2 = nums2.size();
        if( n1 == 0 && n2 == 0)
			return 0;
		vector<int> sum;
		int i1 = 0, i2 = 0;
		while( i1 < n1 && i2 < n2)
		{
			if(nums1[i1] < nums2[i2])
			{
				sum.push_back(nums1[i1]);
				i1++;
			}
			else
			{
				sum.push_back(nums2[i2]);
				i2++;
			}
			if( i1 == n1 && i2 != n2)
			{
				sum.insert(sum.end(), nums2.begin()+i2, nums2.end());
			}
			if( i1 != n1 && i2 == n2)
			{
				sum.insert(sum.end(), nums1.begin()+i1, nums1.end());
			}
		}
        if( n1 == 0 )
			sum = nums2;
		if( n2 == 0 )
			sum = nums1;
		if((n1 + n2) % 2)
		{
			return sum[(n1+n2)/2];
		}
		else
			return (sum[(n1+n2)/2 - 1] + sum[(n1+n2)/2]) / 2.0;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值