题目
给定一个长度为 n 的整数序列 a1,a2,…,an 以及一个长度为 m 的整数序列 b1,b2,…,bm。
请你判断 a 序列是否为 b 序列的子序列。
子序列指序列的一部分项按原有次序排列而得的序列,例如序列 {a1,a3,a5} 是序列 {a1,a2,a3,a4,a5} 的一个子序列。
输入 两个数组的长度 3 5 第一个数组 1 3 5 第二个数组 1 2 3 4 5
输出 Yes
public class 双指针_判断子序列 {
public static void main(String[] args) {
//接收初始数据
Scanner in = new Scanner(System.in);
int n = in.nextInt(), m = in.nextInt();
int[] a = new int[n], b = new int[m];
for (int i = 0; ia[i] = in.nextInt();}
for (int i = 0; ib[i] = in.nextInt();}
//创建双指针从a和b的头部开始,如果a[i]和b[j]相对,那么i往后移动
//需要注意的是j不管能不能匹配都需要往后移动,因为是要顺位查找
int i = 0, j = 0;
while (i < n && j < m) {
if (a[i]==b[j]) {i++;}
j++;
}
//判断,如果a的每一个元素都能在b中找到,那么i应该等于n,反之说明找不全或匹配不到
if (i==n) {System.out.println("Yes");}
else {System.out.println("No");}
}
}
图例:
今天的题也好简单!芜湖~继续打游戏!不过双指针到此为止了呜呜呜
声明:算法思路来源为y总,详细请见https://www.acwing.com/
本文仅用作学习记录和交流



