如果可以通过使用以下操作(任意次数,可能为零次)使其所有元素都相同,那么这个数组可以称之为漂亮数组:
选择一个索引i(2≤i≤|a|-1),使ai-1=ai+1,并将ai替换为ai-1
注:这个操作的具体含义就是,对于一个数ai, 如果其左右两边的数ai-1和ai+1是相等的,则可以把ai替换为和左右两边一样的数。
你会得到一个漂亮的数组a1,a2,…,an,为了使它不再漂亮,你必须从中删除的最小元素数量是多少?禁止更换元素。如果不可能这样做,则输出-1。
如果可以通过使用以下操作(任意次数,可能为零次)使其所有元素都相同,那么这个数组可以称之为漂亮数组:
选择一个索引i(2≤i≤|a|-1),使ai-1=ai+1,并将ai替换为ai-1
注:这个操作的具体含义就是,对于一个数ai, 如果其左右两边的数ai-1和ai+1是相等的,则可以把ai替换为和左右两边一样的数。
你会得到一个漂亮的数组a1,a2,…,an,为了使它不再漂亮,你必须从中删除的最小元素数量是多少?禁止更换元素。如果不可能这样做,则输出-1。
第一行包含一个整数t(1≤t≤104)--测试用例的数量。
每个测试用例的第一行包含一个整数n(1≤n≤3⋅105).
第二行包含n整数a1、a2、…、an(1≤ai≤n).
输入的其他限制:
在每个测试用例中,给定的数组a都很漂亮;
所有测试用例的n之和不超过3⋅105。
对于每个测试用例,输出一个整数——你必须从数组a中删除的最小元素数,以使其不再漂亮。如果不可能,则输出-1。
4 3 2 2 2 5 1 2 1 2 1 1 1 7 3 3 3 5 3 3 3
-1 1 -1 3
在第一个测试用例中,不可能对数组进行修改,使其不再漂亮。无论我们从数组中删除多少个数字,由相同数字组成的数组都会保持漂亮。
例如,在第二个测试用例中,您可以删除索引5处的数字。
得到的数组将是[1,2,1,2]。让我们看看它是否漂亮。有两种操作可供选择:
当i=2:数组变为[1,1,1,2]。不能再对其应用任何操作,而且数字也不完全相同。
当i=3:数组变为[1,2,2]。也不能对它应用更多的操作,而且数字仍然不完全相同。
因此,数组[1,2,1,2]并不漂亮。
例如,在第四个测试用例中,你可以删除前三个元素。得到的数组[5,3,3,3]并不漂亮。