解题思路
我们希望通过至多一次删除一个连续子段,使剩余序列所有元素互不相同(“多彩”)。设删除的是区间 [l,r],则保留下来的部分是前缀 [1,l−1] 与后缀 [r+1,n] 的拼接。因此剩余序列“多彩”的充要条件是:
- 前缀内部互不相同;
- 后缀内部互不相同;
- 前缀与后缀之间也没有重复元素。
于是问题转化为:选择一个前缀长度 i(保留 [1,i]),和一个后缀起点 r(保留 [r,n]),满足三条互异性条件,删除长度为 k=r−i−1 的中段,使 k 最小。为了便于实现,令前缀长度用“元素个数”记为 i(即保留 [1..i]),则删除长度是 r−i(当我们用 0-based 写法时,等式会相应平移,思想一致)。