题目详情
给你一个长度为n的正整数序列A1,A2,A3...An,请你求出有多少个独特区间,独特区间就是一个连续的并且区间
里的每个数都不相同的子序列。例如:1 2 3 答案就是6,因为每个数都不行同。 1 2 2 答案是4
输入描述:
输入包含多组测试数据,每组测试数据包含两行,第一行为一个正整数n(0<n<=1000000);第二行包含n个正整数
,每个数都小于2^30,每两个数以空格隔开。
输出描述:
对于每组测试数据输出相应的答案。
答题说明
样例输入:
5
3 4 5 5 2
3
1 2 3
样例输出:
9
6
思路:感觉也没有什么好说的,假设数组为array,设置两个指标l和r,起初l=0,r=1,然后如果在区间l到r-1没有
找到array[r],或者找到了但是找到的元素的下标小于l(这时记住更新该元素的小标为最新的,即r),那么r就向
右移动,否则,假设找到的元素的下标为l1,那么更新结果,与此同时,更新l为l1. 读者呀,我也不知道如何说了
,具体的看代码吧。
不过要注意,元素的查找我用的是hash,刚开始用的是二叉树,傻子都知道会超时,不过我还是提交了(
呵呵,我不怕傻,不怕犯错)。
代码如下: