输入样例:
3 5
1 3 5
1 2 3 4 5
输出样例:
Yes
这道题很明显不难,就用那个双指针模板就好了。
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
int main(void)
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int j=1;j<=m;j++) cin>>b[j];
int i=1,j=1;
for(i=1;i<=n;i++)
{
while(a[i]!=b[j]&&j<=m) j++;
if(j>m)
break;
j++;
}
if(i>n)
cout<<"Yes";
else
cout<<"No";
}
可能这比较太死板了,老师的代码是这样的
#include <iostream>
#include <cstring>
using namespace std;
const int N = 100010;
int n, m;
int a[N], b[N];
int main()
{
scanf("%d%d", &n, &m);
for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);
for (int i = 0; i < m; i ++ ) scanf("%d", &b[i]);
int i = 0, j = 0;
while (i < n && j < m)
{
if (a[i] == b[j]) i ++ ;
j ++ ;
}
if (i == n) puts("Yes");
else puts("No");
return 0;
}
作者:yxc
链接:https://www.acwing.com/activity/content/code/content/589289/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。