两个序列的中位数(双指针)

简介: 两个序列的中位数(双指针)

一个长度为n(n⩾1)的升序序列S,处在第2n个位置的数称为序列S的中位数(median number),例如,序列S1={10,13,14,16,18,19}的中位数是14。两个序列的中位数是它们所有元素的升序序列的中位数,例如,S2={2,4,8,9,20,21},则S1和S2的中位数是13。现有两个等长升序序列A和B,试设计一个在时间和空间两方面都尽可能高效的算法,找出两个序列的中位数。


输入格式:

输入在三行进行,第一行1个非负整数N,表示两个数列的长度,第二行和第三行,每行N个非负整数,数与数之间用空格间隔。


输出格式:

在一行内输出一个整数。


输入样例:

1. 6
2. 8 11 14 15 17 19
3. 2 4 6 9 10 12


输出样例:

10


#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n, x;
    vector<int>ans;
    scanf("%d", &n);
    for (int i = 0; i < 2 * n; i ++ )
    {
        scanf("%d", &x);
        ans.push_back(x);
    }
    int l1 = 0, l2 = n;
    for (int i = 1; i < n; i ++ )
    {
        if(ans[l1] < ans[l2]) l1 ++;
        else l2 ++;
    }
    if(ans[l1] < ans[l2]) printf("%d", ans[l1]);
    else printf("%d", ans[l2]);
    return 0;
}
目录
相关文章
|
8月前
|
机器学习/深度学习 算法 测试技术
【动态规划】C++算法:446等差数列划分 II - 子序列
【动态规划】C++算法:446等差数列划分 II - 子序列
|
8月前
|
机器学习/深度学习 存储 算法
【算法训练-回溯算法 一】【排列问题】全排列、全排列II
【算法训练-回溯算法 一】【排列问题】全排列、全排列II
102 0
|
算法 测试技术 C++
C++二分算法习题:判断是否是完全平方数[容易]和排列箱子[容易]
C++二分算法习题:判断是否是完全平方数[容易]和排列箱子[容易]
|
算法 测试技术 C#
C++前缀和算法的应用:统计中位数为 K 的子数组
C++前缀和算法的应用:统计中位数为 K 的子数组
|
4月前
|
存储 C语言 Python
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
668 4
|
6月前
|
算法
【算法】二分查找(整数二分和浮点数二分)
算法学习——二分查找(整数二分和浮点数二分)
50 0
【算法】二分查找(整数二分和浮点数二分)
|
8月前
|
算法 测试技术 C#
【折半处理 二分查找】1755. 最接近目标值的子序列和
【折半处理 二分查找】1755. 最接近目标值的子序列和
|
8月前
|
算法
回溯-求出数组的所有子序列【学习算法】
回溯-求出数组的所有子序列【学习算法】
54 0
|
人工智能 算法
动态规划之区间一维
噩梦中的仙境:动态规划之区间一维
81 0
动态规划之区间一维
|
机器学习/深度学习 存储 算法
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II
算法训练Day29|* 491.递增子序列* 46.全排列* 47.全排列 II