判断子序列


文章目录


提示:以下是本篇文章正文内容

一、题目

给定一个长度为 n

的整数序列 a1,a2,...,an

以及一个长度为 m

的整数序列 b1,b2,...,bm

。

请你判断 a

序列是否为 b

序列的子序列。

子序列指序列的一部分项按原有次序排列而得的序列,例如序列 {a1,a3,a5}

是序列 {a1,a2,a3,a4,a5}

的一个子序列。

输入格式

第一行包含两个整数 n,m

。

第二行包含 n

个整数,表示 a1,a2,...,an

。

第三行包含 m

个整数,表示 b1,b2,...,bm

。

输出格式

如果 a

序列是 b

序列的子序列,输出一行 Yes。

否则,输出 No。

数据范围

1≤n≤m≤105

,

−109≤ai,bi≤109

输入样例:

3 5

1 3 5

1 2 3 4 5

输出样例:

Yes

二、思路及代码

1.思路

双指针的思想。

2.答案

代码如下:

c 复制代码
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100010;

int a[N], b[N];

int main()
{
    int n, m;
    cin >> n >> m;
    
    for(int i = 0; i < n; i ++) cin >> a[i];
    
    for(int i = 0; i < m; i ++) cin >> b[i];
    
    int i, j;
    for(i = 0, j = 0; i < n && j < m; j ++)
        if(a[i] == b[j]) i ++;
    
    if(i == n) cout << "Yes" << endl;
    else cout << "No" << endl;
    
    return 0;
}

总结

Just Review.

相关推荐
心仪久了会沦陷2 分钟前
C语言数据结构入门——树与二叉树详解:概念、堆实现与链式遍历
c语言·数据结构·算法
小此方7 分钟前
[算法实战论:动态规划]背包问题概念,01不满背包问题,01满背包问题,背包问题的滚动数组空间优化
算法·动态规划
悠仁さん1 小时前
【C++】哈希表
c++·算法·散列表
码少女1 小时前
数据结构——图的基础
数据结构
地平线开发者2 小时前
点云算法整理与常用计算模块:从数据到模型,再到工程与量化
算法·自动驾驶
Severus_black3 小时前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
噢,我明白了4 小时前
JAVA中的一些基础应用知识点
java·开发语言
武子康4 小时前
H3-World 为何在加载 LoRA 前,先检查导入的代码?
人工智能·深度学习·算法
时间的拾荒人5 小时前
Redis 入门详解:核心特性、重要文件与全局命令实战
开发语言·redis·面试
秋天的怀念_David5 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法