—>原题链接
思路:
1.首先定义两个指针 i 和 j 分别指向x和y的起始位置
2.开始循环遍历x和y数组,如果 x[i] == y[j] 那么i++,否则j++,
遍历到最后i==n那么就说明x是y的子序列
图解
上代码:
#include <iostream>
using namespace std;
const int N = 111111;
int n,m,x[N],y[N];
int main()
{
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&x[i]);
for(int i=0;i<m;i++) scanf("%d",&y[i]);
int i=0,j=0;
while(i<n && j<m)
{
if(x[i] == y[j]) i++;
j++;
}
if(i == n)
cout<<"Yes\n";
else
cout<<"No\n";
return 0;
}
运行结果: