题目描述
给定一个长度为 n 的整数序列 a1,a2,…,an 以及一个长度为 m 的整数序列 b1,b2,…,bm。 请你判断 a序列是否为 b 序列的子序列。 子序列指序列的一部分项按原有次序排列而得的序列,例如序列 { a1,a3,a5 } 是序列 { a1,a2,a3,a4,a5 } 的一个子序列。
输入格式
第一行包含两个正整数 n ( 1≤n≤105 )和 m (1≤m≤105),分别表示序列 a,b 中的元素个数 。 第二行包含 n 个正整数 a1,a2…am−1( −109≤ai≤109)表示 a1,a2,…,an。 第三行包含 n 个正整数 b1,b2…bm( −109≤bi≤109 )表示 b1,b2,…,bm 。
输出格式
如果 a 序列是 b 序列的子序列,输出一行 Yes。 否则,输出 No。
输入输出样例 #1
输入 #1
3 5
1 3 5
1 2 3 4 5
输出 #1
Yes
题解#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
int a[N],b[N];
int main(){
int n,m;
cin>>n>>m;
int cnt=0,sum=0;
for(int i=1;i<=n;i++){
cin>>a[i];
sum++;
}
for(int i=1;i<=m;i++){
cin>>b[i];
}
int l=1,r=1;
while(l<=n&&r<=m){
if(a[l]==b[r]){
cnt++;
l++,r++;
}
else{
r++;
}
}
if(cnt==sum){
cout<<"Yes";
}else{
cout<<"No";
}
return 0;
}
1202

被折叠的 条评论
为什么被折叠?



