- 文体两开花
思路
- 2025-1-24 14:21:41 @
/*
4 4
5 1 7 3
2 3 4 1
n,m
int arr[100005];
for(n) arr
for(m) brr
for(int i=1;i<=n;i++){ //arr[i] 10000000000
for(int j=1;j<=m;j++){ 100000
if(arr[i]==brr[j]) cout arr[i];
}
}超时 85分
如果说我们用计数数组 arr[1000000000]
100
稠密 1000个数 每个数都是1~3的范围
稀疏 100000个数 每个数的范围 1~1000000000
数组的下标 他一定是连续的数字 0~?
有一种数据形式 能满足下标他不是连续的
数组 下标必须是从0开始的整数
map 自己去定义 谁和谁对应
*/
#include <bits/stdc++.h>
using namespace std;
map<int,int> vis; //自己定义的下标和值的集合
int n,m,x,arr[100005];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>arr[i];
for(int i=1;i<=m;i++){
cin>>x;
vis[x] = 1; //=1就代表出现过
}
for(int i=1;i<=n;i++){
if(vis[arr[i]]==1) cout<<arr[i]<<" ";
}
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 189
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 22
- 已通过
- 7
- 上传者