核心判定:对子数组而言,若“出现次数最多的次数”只由某一个元素达到,则该子数组存在“唯一众数”。
算法:双重枚举子数组的左右端点(固定左端点,向右扩展),在扩展过程中用哈希表维护:
freq[x]:当前子数组内元素 x 的出现次数;maxFreq:当前子数组内的最高出现次数;cntMax:达到 maxFreq 的元素个数。增量更新:每次把右端点元素 x 加入:
给定一个长度为n的整数序列a1,a2,...,an。我们称一个非空连续子数组al,al+1,...,ar,存在“唯一众数”,当且仅当在该子数组中,出现次数最多的数恰好只有一个(即最高频次仅由某一个数独占)。
请你求出存在唯一众数的最长子数组的长度。若不存在这样的子数组,则输出0。
名词解释: