—>原题链接
思路:
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";elsecout<<"No\n";return 0;
}
运行结果: