使用双指针算法
一个指向主序列, 一个指向子序列 对比指针指向数据进行判断
#include<iostream>
using namespace std;
const int N=1e5+10;
int A[N],B[N];
int m,n;
int main()
{
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]);//序列
int i=0,j=0;//双指针进行判断
while(i<n&&j<m)
{
if(A[i]==B[j]){i++,j++;}//相同同时后移
else j++;//不同移动主序列
}
if(i==n)cout<<"Yes";
else cout<<"No";
}