【详细解析】7-1 两个有序序列的中位数 (25 分)
题目描述
已知有两个等长的非降序序列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 分)相关推荐
- 7-234 两个有序序列的中位数 (25 分)
7-234 两个有序序列的中位数 (25 分) 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0,A1,⋯,AN−1的中位数指A(N−1)/2的值,即第 ...
- 7-53 两个有序序列的中位数 (25 分)(思路加详解)用STL容器中的set容器的自动去重过不去
一:题目 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A 0 ,A 1 ,⋯,A N−1 的中位数指A (N−1)/2 的值,即第⌊(N+1)/ ...
- PTA5-53 两个有序序列的中位数
5-53 两个有序序列的中位数 (25分) 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A_0, A_1, \cdots, A_{N-1}A0,A1 ...
- 两个序列的中位数c语言,小白在线求教 用归并排序实现查找两个有序序列的中位数...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 两个有序序列的中位数 (20分) 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0,A1,⋯,AN−1的中位数指A ...
- 【详细解析】1033 To Fill or Not to Fill (25 分)
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 With highways available, driving a car from Hangzhou to any other ...
- 基础编程题目集 6-11 求自定类型元素序列的中位数 (25 分)
问题描述: 解题思路: 主要是考察手写排序的能力,这里使用希尔排序~~ 解题代码: ElementType Median( ElementType A[], int N ) {ElementType ...
- java 合并算法思想_Java实现合并两个有序序列算法示例
本文实例讲述了Java实现合并两个有序序列算法.分享给大家供大家参考,具体如下: 问题描述 输入:序列A,其中a0,其中b0 算法思想 创建一个长度为r的数组R,将A中的序列看作是两个有序序列 B=A ...
- 分治法 ——查找问题 —— 寻找两个等长有序序列的中位数
查找问题: 问题一:寻找两个等长有序序列的中位数 问题描述:对于一个长度为n的有序序列(假设均为升序序列)a[0 - n-1] ,处于中间位置的元素称为a的中位数. 例如,若序列a=(11,13,15 ...
- 寻找两个有序数组的中位数
之前讲解过一道数据流求中位数的题目,但是仔细一想觉得那一次对几种数据结构简单的分析了一下实现,并没有对中位数的题目做一个凝练总结,这一次借这个机会,好好整理一下思路. 题目描述 给定两个大小为 ...
最新文章
- SAP MM 不常用事务代码之MB59
- 一份平民化的应用性能优化检查列表(完整篇)--转
- 【Linux】一步一步学Linux——md5sum命令(61)
- 怎么得到scrollTop
- jq查找字段忽略html标签,jQuery过滤HTML标签并高亮显示关键字的方法
- 数据中异常值的鉴定和处理(1)
- 用msvdm.dll文件实现微软的虚拟桌面
- nacos dataid修改配置文件_nacos 配置中心自动化运维之namespace坑
- 喵哈哈村的魔法考试 Round #1 (Div.2) C 喵哈哈村的魔法石(II) 背包dp
- SharePoint 2010 价格计算器
- asp定时生成静态HTML的代码
- 2016中国app年度排行榜:十大行业、25个领域、Top 500 和2017趋势预测
- 遍历文件夹下的所有文件(os.listdir())
- 学习手机软件开发学什么,怎样学?
- Python学习之文件13
- 分享一些 Vue 的视频教程和电子书资源
- 全国首个DCMM5级!牛X了我的国家电网!!!
- 苹果手机软件升级密码_苹果app应用制作多少钱_广腾(深圳)互联网科技有限公司...
- **关于maven的,maven配置后报 java.lang.UnsupportedClassVersionError: org/codehaus/plexus/classworlds/launche
- ios 执行shell脚本