【每日一题】给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))

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

 

#include<stdio.h>
#include<stdlib.h>
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) 
{
	double num1 = 0;
	do 
	{
		if (0 == nums1Size)
		{
			num1 = -1;
			 
			break;
		}
		if (1 == nums1Size % 2)
		{
			num1 = *(nums1 + nums1Size / 2);
		}
		else
		{
			int tmp1 = nums1[nums1Size / 2];
			int tmp2 = nums1[nums1Size / 2 - 1];
			num1 = (tmp2 + tmp1) / 2.0;
		}
	} while (0);
	
	double num2 = 0;
	do 
	{
		if (0 == nums2Size)
		{
			num2 = -1;
			 
			break;
		}
		if (1 == nums2Size % 2)
		{
			num2 = *(nums2 + nums2Size / 2);
		}
		else
		{
			int tmp1 = nums2[nums2Size / 2];
			int tmp2 = nums2[nums2Size / 2 - 1];
			num2 = (tmp2 + tmp1) / 2.0;
		}
	} while (0);
	
	if (num1==-1||num2==-1)
	{
		if (num1 == -1)
		{
			printf("%f", (num2));
			return num2;

		}
		else
		{
			printf("%f", (num1));
			return num1;
		}
	}
	else
	{
		printf("%f", (num1 + num2) / 2);
		return (num1 + num2) / 2.0;
	}
	
	
}
 
int main()
{
    
	int nums1[] = {2,3};
	int nums2[] = { 1 };
	findMedianSortedArrays(nums1, sizeof(nums1) / sizeof(int), nums2, sizeof(nums2) / sizeof(int));
    system("pause");
    return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值