链接:Hdu 3763 CD
题意简述
求有重复数的个数;
解题思路
我开始用map,结果MLE,这题二分查找,时间复杂度为O(mlog(n))
代码如下
#include<iostream>
using namespace std;
int a[1000101];
int binary_search(int l, int r, int x){
while(l <= r){
int mid = l + r >> 1;
if(a[mid] == x){
return mid;
}
else if(x > a[mid]){
l = mid + 1;
}
else r = mid - 1;
}
return -1;
}
int main(){
int n, m;
while(scanf("%d %d", &n, &m) != EOF &&(m + n)){
int cnt = 0;
for(int i = 0; i < n; i++){
scanf("%d", &a[i]);
}
while(m--){
int temp;
scanf("%d", &temp);
if(binary_search(0, n - 1, temp) != -1){
cnt++;
}
}
printf("%d\n", cnt);
}
return 0;
}