CF1257C Dominated Subarray

题目描述

我们称一个数组 $t$ 被值 $v$ 支配,当且仅当满足以下条件: 首先,数组 $t$ 至少包含 $2$ 个元素。现在,计算每个数字 $num$ 在 $t$ 中出现的次数,记为 $occ(num)$。如果存在某个数字 $v$,使得 $occ(v) > occ(v')$ 对于任意其他数字 $v'$ 都成立,则称 $t$ 被 $v$ 支配。例如,数组 $[1, 2, 3, 4, 5, 2]$、$[11, 11]$ 和 $[3, 2, 3, 2, 3]$ 分别被 $2$、$11$ 和 $3$ 支配;而数组 $[3]$、$[1, 2]$ 和 $[3, 3, 2, 2, 1]$ 都不被支配。 小提示:由于任意数组至多只能被一个数字支配,因此我们可以直接说数组被支配或不被支配,而无需指定具体的数字。 给定数组 $a_1, a_2, \dots, a_n$,请计算其最短的被支配子数组的长度,或者说明不存在这样的子数组。 数组 $a$ 的子数组是指 $a$ 的一个连续部分,即 $a_i, a_{i + 1}, \dots, a_j$,其中 $1 \le i \le j \le n$。

输入格式

第一行包含一个整数 $T$($1 \le T \le 1000$),表示测试用例的数量。每个测试用例包含两行。 第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示数组 $a$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le n$),表示数组 $a$ 的元素。 保证所有测试用例中数组的总长度不超过 $2 \cdot 10^5$。

输出格式

输出 $T$ 行,每行一个整数。对于每个测试用例,输出最短被支配子数组的长度;如果不存在这样的子数组,输出 $-1$。

说明/提示

在第一个测试用例中,没有长度至少为 $2$ 的子数组,因此答案为 $-1$。 在第二个测试用例中,整个数组被 $1$ 支配,并且它是唯一的被支配子数组。 在第三个测试用例中,子数组 $a_4, a_5, a_6$ 是最短的被支配子数组。 在第四个测试用例中,所有长度大于 $1$ 的子数组都是被支配的。 由 ChatGPT 4.1 翻译