首页 > 试题广场 >

子数组查找

[编程题]子数组查找
  • 热度指数:1264 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定长度为N的整数数组,以及M个互不相同的整数,请找出包含这M个整数的最短子数组。

例如:给定数组[4 2 1 3],包含数字集{2, 3}的最短子数组是[2 1 3],包含数字集{1, 3}的最短子数组是[1 3]。

输入描述:
第一行一个正整数T(T<=10),表示T个测试样例;
对于每个测试样例,
输入正整数N(N<=100,000),表示数组长度;
接下来输入N个正整数,所有整数都>=0且<=1,000,000,000;
输入正整数M(M<=N),表示M个互不相同的整数;
接下来输入M个整数,表示要查询的整数,已保证互不相同。

有部分测试样例满足N<=1,000。


输出描述:
输出T行,每行一个正整数,表示最短子数组的长度。如果不存在,输出0
示例1

输入

1
4
4 2 1 3
2
2 3

输出

3