2816. 判断子序列
摘要
Title: 2816. 判断子序列
Tag: 双指针
Memory Limit: 64 MB
Time Limit: 1000 ms
Powered by:NEFU AB-IN
2816. 判断子序列
- 
        题意给定一个长度为 n 的整数序列 a1,a2,…,an 以及一个长度为 m 的整数序列 b1,b2,…,bm。 
 请你判断 a 序列是否为 b 序列的子序列。
 子序列指序列的一部分项按原有次序排列而得的序列,例如序列 {a1,a3,a5} 是序列 {a1,a2,a3,a4,a5} 的一个子序列。
- 
        思路遍历两个数组,看是否匹配上,指定一个指针不动,移动另一个指针,直到两者数相等 
- 
        代码1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24''' 
 Author: NEFU AB-IN
 Date: 2022-02-23 10:33:49
 FilePath: \ACM\Acwing\2816.py
 LastEditTime: 2022-02-23 10:38:16
 '''
 N = int(1e5 + 100)
 a = [0] * N
 b = [0] * N
 n, m = map(int, input().split())
 a[1:] = map(int, input().split())
 b[1:] = map(int, input().split())
 j = 1
 for i in range(1, n + 1):
 while j <= m and b[j] != a[i]:
 j += 1
 if j > m:
 print("No")
 exit(0)
 else:
 j += 1
 print("Yes")另一版 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25''' 
 Author: NEFU AB-IN
 Date: 2022-02-23 10:33:49
 FilePath: \ACM\Acwing\2816.py
 LastEditTime: 2022-02-23 10:38:16
 '''
 N = int(1e5 + 100)
 a = [0] * N
 b = [0] * N
 n, m = map(int, input().split())
 a[1:] = map(int, input().split())
 b[1:] = map(int, input().split())
 i, j = 1, 1
 while i <= n and j <= m:
 if a[i] == b[j]:
 i += 1
 j += 1
 if i == n + 1:
 print("Yes")
 else:
 print("No")