7-53 两个有序序列的中位数 (25 分)

排序之后再寻找会超时 O ( n l o g n ) O(nlogn) O(nlogn)
使用双指针是线性的 O ( n ) O(n) O(n)

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int A[maxn];
int B[maxn];
int n;
int merge(){
	int i=0,j=0;
	int mid = (2*n+1)/2;
	while(i+j<mid-1){ //其实是在i+j==mid-2时结束,因为i,j是从0开始的 
		if(A[i]<B[j]) i++;
		else j++; 
	}
	return A[i]>B[j]?B[j]:A[i];	
} 
int main(){
	
	scanf("%d",&n);
	for(int i=0;i<n;i++){
		scanf("%d",A+i);
	}
	for(int i=0;i<n;i++){
		scanf("%d",B+i);
	}
	printf("%d\n",merge());
	return 0;
}
全部评论

相关推荐

09-17 20:37
已编辑
长沙学院 Java
涂莱:学院本重心后移,金10银11,甚至金11银12,战线拉长一点,对于学院本来说秋招是个持久战,加油吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
09-01 09:00
已编辑
四川旅游学院 运营
牛客55195891...:主要是专业不好,别的没毛病
牛客解忧铺
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务