Non-boring sequences
题意:
给出一个序列,如果他的任何一个连续的子序列都有至少一个特殊元素(在这个子序列中只出现一次),则这个序列是non-boring,否则是boring
解题思路:
首先要解决的问题是如何快速判断一个子序列是否有特殊元素,这里采用的办法是使用map记录下标为 i 的元素左边最近的相同元素的下标(设为l[i]),和右边最近的相同元素的下标(设为r[i])。
假设子序列的区间是[left,right],只要遍历其中的元素,看是否存在 l[i] < left 并且 r[i] > right 的,如果有就说明这个子序列是中存在特殊元素,就是第 i 个。
由这个特殊元素,我们可以得出[left,i+1],[left,i+2]……和[i-1,right],[i-2,right]……等区间的子序列都包含这个特殊元素。
由此,我们只需要证明[left,i-1]和[i+1,right]这两个区间也包含特殊元素,就可以推出[left,right]这个区间是non-boring了。