当前位置:   article > 正文

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

双序列中位数

一个长度为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
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main()
  5. {
  6. int n, x;
  7. vector<int>ans;
  8. scanf("%d", &n);
  9. for (int i = 0; i < 2 * n; i ++ )
  10. {
  11. scanf("%d", &x);
  12. ans.push_back(x);
  13. }
  14. int l1 = 0, l2 = n;
  15. for (int i = 1; i < n; i ++ )
  16. {
  17. if(ans[l1] < ans[l2]) l1 ++;
  18. else l2 ++;
  19. }
  20. if(ans[l1] < ans[l2]) printf("%d", ans[l1]);
  21. else printf("%d", ans[l2]);
  22. return 0;
  23. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/784742
推荐阅读
相关标签
  

闽ICP备14008679号