题目描述

已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A0,A1,…,An-1的中位数指A(N1)/2的值,即第[(N+1)/2]个数(A0为第1个数)。

输入格式:

输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。

输出格式:

在一行中输出两个输入序列的并集序列的中位数。

输入样例1:

5
1 3 5 7 9
2 3 4 5 6

输出样例1:

4

错误思路:

因为本题求并集 因此想到把两行数组放到一起,用set排序加删除。
但题中并集的意思只是合并,并不包含删除

错误代码:

#include<iostream>
#include<cstdio>
#include<set>using namespace std ;int main ()
{int a ;int n ;set<int>s1 ;cin >> n ;for ( int i = 0 ; i < n*2 ; i++ ){cin >> a ;s1.insert(a) ;}/*
//错误:    for( int i = 0 ; i < s1.size() ; i++ ){cout << *s1.begin()+i << " " ;}
//正确: set<int>::iterator it ;  //容器 for ( it = s1.begin() ; it != s1.end() ; it++){printf( "%d ",*it) ;} */int num = s1.size() ;set<int>::iterator it ;  //容器it = s1.begin() ; if ( num % 2 == 0 ){//        float sum = ((*it+(num/2-1))+ (*it+(num/2)))/2.0 ;int sum = *it+(num/2-1);cout << sum ;}else cout << *it+((num+1)/2-1) ;return 0 ;
}

正确思路:

用vector栈把两个数组压入后,排序(sort)求中位数。

正确代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{vector<int> C;//两序列的并集int n,data1,data2;cin>>n;for(int i=0; i<n; i++){cin>>data1;C.push_back(data1);}for(int i=0; i<n; i++){cin>>data2;C.push_back(data2);}sort(C.begin(),C.end());  //升序排序 ,取消冒泡 cout<<C[n-1];
}

注意:

这里的中位数指的不是中间两个数相加除二,而是中间两个数左边的那个数!

【详细解析】7-1 两个有序序列的中位数 (25 分)相关推荐

  1. 7-234 两个有序序列的中位数 (25 分)

    7-234 两个有序序列的中位数 (25 分) 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0​,A1​,⋯,AN−1​的中位数指A(N−1)/2​的值,即第 ...

  2. 7-53 两个有序序列的中位数 (25 分)(思路加详解)用STL容器中的set容器的自动去重过不去

    一:题目 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A 0 ​ ,A 1 ​ ,⋯,A N−1 ​ 的中位数指A (N−1)/2 ​ 的值,即第⌊(N+1)/ ...

  3. PTA5-53 两个有序序列的中位数

    5-53 两个有序序列的中位数   (25分) 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A_0, A_1, \cdots, A_{N-1}A​0​​,A​1 ...

  4. 两个序列的中位数c语言,小白在线求教 用归并排序实现查找两个有序序列的中位数...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 两个有序序列的中位数 (20分) 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0,A1,⋯,AN−1的中位数指A ...

  5. 【详细解析】1033 To Fill or Not to Fill (25 分)

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 With highways available, driving a car from Hangzhou to any other ...

  6. 基础编程题目集 6-11 求自定类型元素序列的中位数 (25 分)

    问题描述: 解题思路: 主要是考察手写排序的能力,这里使用希尔排序~~ 解题代码: ElementType Median( ElementType A[], int N ) {ElementType ...

  7. java 合并算法思想_Java实现合并两个有序序列算法示例

    本文实例讲述了Java实现合并两个有序序列算法.分享给大家供大家参考,具体如下: 问题描述 输入:序列A,其中a0,其中b0 算法思想 创建一个长度为r的数组R,将A中的序列看作是两个有序序列 B=A ...

  8. 分治法 ——查找问题 —— 寻找两个等长有序序列的中位数

    查找问题: 问题一:寻找两个等长有序序列的中位数 问题描述:对于一个长度为n的有序序列(假设均为升序序列)a[0 - n-1] ,处于中间位置的元素称为a的中位数. 例如,若序列a=(11,13,15 ...

  9. 寻找两个有序数组的中位数

      之前讲解过一道数据流求中位数的题目,但是仔细一想觉得那一次对几种数据结构简单的分析了一下实现,并没有对中位数的题目做一个凝练总结,这一次借这个机会,好好整理一下思路. 题目描述   给定两个大小为 ...

最新文章

  1. SAP MM 不常用事务代码之MB59
  2. 一份平民化的应用性能优化检查列表(完整篇)--转
  3. 【Linux】一步一步学Linux——md5sum命令(61)
  4. 怎么得到scrollTop
  5. jq查找字段忽略html标签,jQuery过滤HTML标签并高亮显示关键字的方法
  6. 数据中异常值的鉴定和处理(1)
  7. 用msvdm.dll文件实现微软的虚拟桌面
  8. nacos dataid修改配置文件_nacos 配置中心自动化运维之namespace坑
  9. 喵哈哈村的魔法考试 Round #1 (Div.2) C 喵哈哈村的魔法石(II) 背包dp
  10. SharePoint 2010 价格计算器
  11. asp定时生成静态HTML的代码
  12. 2016中国app年度排行榜:十大行业、25个领域、Top 500 和2017趋势预测
  13. 遍历文件夹下的所有文件(os.listdir())
  14. 学习手机软件开发学什么,怎样学?
  15. Python学习之文件13
  16. 分享一些 Vue 的视频教程和电子书资源
  17. 全国首个DCMM5级!牛X了我的国家电网!!!
  18. 苹果手机软件升级密码_苹果app应用制作多少钱_广腾(深圳)互联网科技有限公司...
  19. **关于maven的,maven配置后报 java.lang.UnsupportedClassVersionError: org/codehaus/plexus/classworlds/launche
  20. ios 执行shell脚本

热门文章

  1. MarkdownPad安装以及绘制 UML 图
  2. 一文了解Linux 网络 I/O 模型
  3. JAVA线程间协作:wait.notify.notifyAll
  4. OS- -调度(二)
  5. 基于LZ77算法的文件解压缩项目缺陷分析
  6. 当我们扩张时——技术商业策略圆桌第一弹
  7. 【线上分享】海外超低延时链路设计的挑战与优化实践
  8. 走进5G | 腾讯技术工程5G技术沙龙开启报名啦!
  9. 海量服务 | 论服务器极致化海量运营交付的未来
  10. 使用ffmpeg合并视频文件的三种方法