PAT-1029 Median (25)
2018-02-28 13:20
471 查看
题目大意:给定两个有序串,长为 n,m。问两者合并的中位数是哪个。
解题思路:本题采用的 类插入排序 ,用游标记录两个数组的比较前端,到达 (m+n)/2 停止。时间复杂度:O(max(n,m)) 。
题目链接:https://www.patest.cn/contests/pat-a-practise/1029#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <stack>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
long int a[1000001],b[1000001];
int main(int argc, char** argv) {
int n,m;
cin >> n;
for(int i=0;i<n;++i)
scanf("%ld",&a[i]);
cin >> m;
for(int i=0;i<m;++i)
scanf("%ld",&b[i]);
int n1 = 0,m1 = 0,cnt = 0;
long int t;
if((m+n)%2 == 1)
cnt=-1;
while(1)
{
if(n1 == n)
{
t = b[m1];
++m1;
}
else if(m1 == m)
{
t = a[n1];
++n1;
}
else if(a[n1]>b[m1])
{
t = b[m1];
++m1;
}
else
{
t = a[n1];
++n1;
}
++cnt;
if(cnt == (n+m)/2)
break;
}
printf("%ld\n",t);
return 0;
}
解题思路:本题采用的 类插入排序 ,用游标记录两个数组的比较前端,到达 (m+n)/2 停止。时间复杂度:O(max(n,m)) 。
题目链接:https://www.patest.cn/contests/pat-a-practise/1029#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <stack>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
long int a[1000001],b[1000001];
int main(int argc, char** argv) {
int n,m;
cin >> n;
for(int i=0;i<n;++i)
scanf("%ld",&a[i]);
cin >> m;
for(int i=0;i<m;++i)
scanf("%ld",&b[i]);
int n1 = 0,m1 = 0,cnt = 0;
long int t;
if((m+n)%2 == 1)
cnt=-1;
while(1)
{
if(n1 == n)
{
t = b[m1];
++m1;
}
else if(m1 == m)
{
t = a[n1];
++n1;
}
else if(a[n1]>b[m1])
{
t = b[m1];
++m1;
}
else
{
t = a[n1];
++n1;
}
++cnt;
if(cnt == (n+m)/2)
break;
}
printf("%ld\n",t);
return 0;
}
相关文章推荐
- PAT-A-1029. Median (25)
- 1029. Median (25)【排序】——PAT (Advanced Level) Practise
- PAT(甲级)1029. Median (25)
- PAT 1029. Median (25)
- 【PAT】1029. Median (25)
- PAT(A) - 1029. Median (25)
- PAT 甲级 1029. Median (25)
- 【PAT】1029. Median (25)
- PAT 1029. Median (25)
- 浙江大学PAT_甲级_1029. Median (25)
- PAT1029.Median (25)
- PAT 1029 Median (25)
- PAT_A 1029. Median (25)
- PAT-A 1029. Median (25)
- PAT甲题题解-1029. Median (25)-求两序列的中位数,水的不要不要的
- PAT (Advanced Level) Practise 1029 Median (25)
- 1029. Median (25) PAT甲级刷题
- PAT (Advanced Level)1029. Median (25)
- 【PAT甲级】1029. Median (25)
- PAT (Advanced Level) Practise 1029 Median (25)