只会做第一题
1、题目:
多多有一堆鹅卵石,总数为n。多多想用这些鹅卵石装饰自己的院子,所以他将这些鹅卵石拍成了一排(位置从1开始),并且为每个鹅卵石涂上了颜色,我们使用正整数表示颜色的种关,第i个鹅卵石的颜色为ai
现在多多想知道,有哪些颜色出现在这一排鹅卵石中,并且所有出现的位置从小到大排列是-个等差数列。
2、实例:
输入
3
1 2 1
输出
2
1 2
2 0
说明:
总共出现了两种颜色满足位置等差排列。颜色1,出现了两次,位置为别为1和3,分布的间隔为2。颜色2,只出现了次,所以分布的间隔为0.
4、题解
大概就是 map<integer,List<integer>> ; key存储的是颜色值, value用一个list.,list(0)维护的是这种颜色的公差,list(1)维护的是满足等差条件下该颜色当前下标。
在遍历的过程中,当前下标对应的颜色存在三种可能:
1)map中不存在,说明是新颜色 ,加入map,初始公差为0
2)map中存在,那么先判断 取出对应map种该颜色的当前公差
11) 若当前该颜色公差为0 ,说明该颜色之前只出现一次,更新该颜色对应当前下标i及公差
12)若 当前颜色公差为-1,,说明 这种颜色的下标序列不构成等差 跳过继续;
13)若当前颜色公差 和map中存的一样,说明目