Acwing 2816. 判断子序列

在这里插入图片描述
输入样例:

3 5
1 3 5
1 2 3 4 5

输出样例:

Yes

这道题很明显不难,就用那个双指针模板就好了。

#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N],b[N];
int main(void)
{
    
    
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int j=1;j<=m;j++) cin>>b[j];
    int i=1,j=1;
    for(i=1;i<=n;i++)
    {
    
    
        while(a[i]!=b[j]&&j<=m) j++;
        if(j>m)
        break;
        j++;
    }
    if(i>n)
    cout<<"Yes";
    else
    cout<<"No";
    
}

可能这比较太死板了,老师的代码是这样的

#include <iostream>
#include <cstring>

using namespace std;

const int N = 100010;

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;
}

作者:yxc
链接:https://www.acwing.com/activity/content/code/content/589289/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/qq_52358098/article/details/113699930