判断子序列问题,双指针算法
从每个数组第一位开始往右移动,当两数组数字相等时,序列位数+1,当该序列位数到头时即为子序列
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
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;
}