AcWing 2816. 判断子序列 双指针 从同一端移动 AC_any
原题链接
简单
作者:
AC_any
,
2021-05-10 11:42:39
,
所有人可见
,
阅读 330
从同一端开始移动
c++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N],b[N];
int n,m;
void acwing(){
cin>>n>>m;
for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);
for (int i = 0; i < m; i ++ ) scanf("%d", &b[i]);
for (int i = 0, j = 0; i < n&&j<m; ){
while(j<m&&a[i]!=b[j]){//查找下一个匹配的bj
j++;
}
if(a[i]==b[j]){//匹配就同时向后移动
i++;
j++;
if(i==n){
printf("Yes\n");
return;
}
}
}
printf("No\n");
}
int main(){
acwing();
return 0;
}