![[AcWing]2816. 判断子序列(C++实现),第1张 [AcWing]2816. 判断子序列(C++实现),第1张](/aiimages/%5BAcWing%5D2816.+%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97%EF%BC%88C%2B%2B%E5%AE%9E%E7%8E%B0%EF%BC%89.png)
- 1. 题目
- 2. 读题(需要重点注意的东西)
- 3. 解法
- 4. 可能有帮助的前置习题
- 5. 所用到的数据结构与算法思想
- 6. 总结
思路: 双指针,i 指向a数组,j 指向b数组,当a[i] == b[j]时,i,j同时后移,当结束时判断i是否遍历完,是则返回true,证明a是b的子数组,否之不是。
注意:本题不要求子序列是连续的
3. 解法---------------------------------------------------解法:双指针---------------------------------------------------
#include4. 可能有帮助的前置习题using namespace std; const int N = 1e5+10; int a[N],b[N]; int n,m; int main(){ cin >> 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; }
- [AcWing]799. 最长连续不重复子序列(C++实现)双指针模板题
双指针的应用
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)