算法刷题笔记 判断子序列(C++实现)

题目描述

  • 给定一个长度为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 ≤10^5,
  • −10^9 ≤ ai,bi ≤ 10^9

基本思路

  • 输入方面,首先是两个整数,整数的最大值为十万,因此可以使用基本整型int来进行表示。接着输入两个数组,数组中元素的最大值为十亿,因此仍然可以通过基本整型int来进行表示。所以,最终可以通过创建两个单元数为100010的整型数组分别记录ab
  • 输出方面,只需要判定a数组是不是b数组的子序列即可。
  • 过程处理方面,只需要按照a数组中的元素顺序,从前到后遍历b数组,检查其中是否存在这样一个序列即可,较为简单。

实现代码

#include <cstdio>

const int N = 100010;
int a[N], b[N];

bool is_son(const int &n, const int &m)
{
    int ap, bp;
    for(bp = 0, ap = 0; bp < m && ap != n; ++bp) if(b[bp] == a[ap]) ap++;
    if(ap == n) return true;
    else return false;
}

int main(void)
{
    int n, m;
    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]);
    if(is_son(n, m)) printf("Yes");
    else printf("No");
    return 0;
}

相关推荐

  1. 算法笔记 判断序列C++实现

    2024-06-08 20:36:04       31 阅读
  2. 力扣-392.判断序列

    2024-06-08 20:36:04       53 阅读
  3. 【leetcode面试经典150】26.判断序列C++)

    2024-06-08 20:36:04       39 阅读
  4. C++】每日一 392 判断序列

    2024-06-08 20:36:04       37 阅读
  5. 算法笔记 区间合并(C++实现

    2024-06-08 20:36:04       30 阅读
  6. 算法笔记 排列数字(C++实现

    2024-06-08 20:36:04       24 阅读
  7. 算法笔记 字符串哈希(C++实现

    2024-06-08 20:36:04       25 阅读
  8. 算法笔记 八数码(C++实现

    2024-06-08 20:36:04       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 20:36:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 20:36:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 20:36:04       82 阅读
  4. Python语言-面向对象

    2024-06-08 20:36:04       91 阅读

热门阅读

  1. Mongodb数组元素更新之使用$定位数组第一个元素

    2024-06-08 20:36:04       32 阅读
  2. C++linux下使用clog和重定向实现写日志

    2024-06-08 20:36:04       23 阅读
  3. 使用安装包安装飞桨寒武纪版本@启智(未通过)

    2024-06-08 20:36:04       35 阅读
  4. 《青少年编程与数学》课程方案:4、课程策略

    2024-06-08 20:36:04       29 阅读
  5. 速盾:DDoS高防IP上设置转发规则

    2024-06-08 20:36:04       31 阅读
  6. 在Pycharm中的命令行窗口中实现清屏的命令

    2024-06-08 20:36:04       32 阅读
  7. reset database to incarnation rman 恢复最早的全备方法

    2024-06-08 20:36:04       25 阅读
  8. C++的内存管理

    2024-06-08 20:36:04       30 阅读
  9. Vue进阶(八十八)前端测试工具介绍

    2024-06-08 20:36:04       26 阅读
  10. 一个可以自动生成随机区组试验的excel VBA小程序2

    2024-06-08 20:36:04       35 阅读
  11. 使用 Python 的 Tkinter 来创建 GUI 应用程序

    2024-06-08 20:36:04       27 阅读