两个有序数列求中位数

这篇博客介绍了如何解决LeetCode上的4. Median of Two Sorted Arrays问题。主要讨论了两种算法:一是合并序列求中位数,虽然简单但时间复杂度高;二是利用二分法求解,虽然实现复杂些,但时间复杂度更低,为O(log(min(m,n)))。博客详细解释了二分法的步骤和C++实现,并对比了两种方法的优劣。" 117753294,8753399,Boost.Math模块测试:函数返回常量,"['C++', 'Boost库', '数学运算', '单元测试', '编程实践']
摘要由CSDN通过智能技术生成

一道经典的算法题

leetcode: 4. Median of Two Sorted Arrays

目录

1 题目描述

2 算法

2.1 合并序列求中位数

2.1.1 算法描述

2.1.2 算法实现(C++)

2.1.3 复杂度分析

2.2 二分法求中位数

2.2.1 算法描述

2.2.2 算法实现(C++)

2.2.3 复杂度分析

3 方法对比


1 题目描述

给出两个有序数列,长度为m的数列nums1 和 长度为n的数列nums2,求两个有序数列中所有数的中位数。


中位数:

设一共有n(>0)个数的有序数列arr,

若n为奇数,则中位数为arr[n/2];

若n为偶数,则中位数为(arr[n/2-1]+arr[n/2])/2.0。


限制:

  • 0 <= m <= 1000
  • 0 <= n <= 1000
  • 1 <= m + n <= 2000
  • -106 <= nums1[i], nums2[i] <= 106

输入(C++):

  • (vector<int>&,vector<int>&)

输出(C++):

  • double

2 算法

2.1 合并序列求中位数

实现简单,但算法复杂度较高。

2.1.1 算法描述

step 1:将两个有序数列进行归并,生成新的有序数列nums3,数列长度为m+n

step 2:按照中位数定义求nums3的中位数并返回。

2.1.2 算法实现(C++

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值