【基础算法】双指针---判断子序列
创始人
2024-05-30 16:49:31
0

🌹作者:云小逸
📝个人主页:云小逸的主页
📝Github:云小逸的Github
🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开!==🤟
👏专栏:C++👏 👏专栏:Java语言👏👏专栏:Linux学习👏
👏专栏: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≤105,
−109≤ai,bi≤109

输入样例:

3 5
1 3 5
1 2 3 4 5

输出样例:

Yes

做题思路:

代码:

双指针问题:

  1. 它读入两个整数 n 和 m,然后读入两个长度分别为 n 和 m 的数组 a 和 b。接下来,代码使用双指针算法在数组 b 中寻找一个子序列,使得它与数组 a 相同。如果找到了这样的一个子序列,程序会输出 “Yes”;否则输出 “No”。

  2. 具体来说,在主函数中,首先使用 scanf() 函数读入输入数据。然后初始化两个指针分别指向数组的开头。接下来使用一个循环遍历数组 b 中的每一个元素。对于每一个元素,程序会检查它是否与当前指向的元素相同。如果相同,则将指针向右移动一位。

  3. 当循环结束时,程序会检查指针是否已经移动到了数组的末尾。如果是,则说明在数组 b 中找到了一个与数组 a 相同的子序列;否则说明没有找到。

代码:

#include 
#include using namespace std;const int N = 100010; // 定义常量 N,用于设置数组的最大长度int n, m; // 定义两个整数变量 n 和 m
int a[N], b[N]; // 定义两个长度为 N 的整型数组 a 和 bint 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) // 遍历数组 b 中的每一个元素{if (a[i] == b[j]) i ++ ; // 如果当前元素与指针所指向的元素相同,则将指针向右移动一位j ++ ; // 将指针向右移动一位}if (i == n) puts("Yes"); // 如果指针已经移动到了数组末尾,则输出 "Yes"else puts("No"); // 否则输出 "No"return 0;
}

在这里插入图片描述

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.我们终其一生,就是要摆脱他人的期待,找到真正的自己。——无声告白

2. 人在的时候,以为总会有机会,其实人生就是减法,见一面就少一面。——北岛

3.不是我性格开朗,其实我也有许多忧伤,也有许多失眠的日子吞噬着我,生命从来不只是只有辉煌。只是我喜欢笑,喜欢空气新鲜又明亮,我愿意像茶,把苦涩留在心里,散发出的都是清香。——汪国真

最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油,为自己点赞!

相关内容

热门资讯

常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...