$ O(nm)的时间复杂度肯定会超时呀 $
by imzfx_Square @ 2024-02-03 10:38:18
你可以把a改成统计数组,每输入一个就统计,输入b的时候再去判断有没有在a里面出现过 @[ycy1124](/user/1199534)
by imzfx_Square @ 2024-02-03 10:40:16
加了一点小小的优化后还是60分
```cpp
#include<bits/stdc++.h>
using namespace std;
int a[100001],b[100001];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&b[i]);
}
sort(b+1,b+m+1);
for(int i=1;i<=n;i++)
{
for(int k=1;k<=m;k++)
{
if(a[i]==b[k])
{
printf("%d ",a[i]);
}
else if(a[i]<b[k])
{
break;
}
}
}
return 0;
}
``````
by ycy1124 @ 2024-02-03 10:42:18
@[imzfx](/user/936183)
统计数组是啥啊
by ycy1124 @ 2024-02-03 10:43:12
本人刚学c++半个学期,啥也不会
by ycy1124 @ 2024-02-03 10:44:04
这个代码你看得懂吗?
```c
#include<bits/stdc++.h>
using namespace std;
int n,m;
map<int,bool> v;
int a[101000];
int b[101000];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>b[i];
v[b[i]]=true;
}
for(int i=1;i<=n;i++){
if(v[a[i]]){
cout<<a[i]<<" ";
}
}
return 0;
}
```
by timmyliao @ 2024-02-03 10:48:45
@[timmyliao](/user/1095093) 我觉得他看不懂 @[ycy1124](/user/1199534)
by __Rickysun__ @ 2024-02-03 10:50:15
@[ycy1124](/user/1199534) 就是定义一个数组,用它去统计哪些数出现过(不然这10^5肯定会超时,你学过map吗?)
by __Rickysun__ @ 2024-02-03 10:51:19
@[ycy1124](/user/1199534) 或者你用二分也可以,OK?~~别告诉我你二分页没学过~~
by __Rickysun__ @ 2024-02-03 10:52:31
@[timmyliao](/user/1095093)
$map$ 是啥
@[Rickysun](/user/824205)
二分我明天学
by ycy1124 @ 2024-02-03 10:53:49