如何找出有序数组中出现次数超过1的元素?附输入输出规范
问题:找出有序数组中重复出现的元素
给定一个有序整数数组,找出其中所有出现次数超过一次的元素。若没有符合条件的元素,输出-1。
输入格式
- 第一行输入单个整数N(1 ≤ N ≤ 10^5),表示数组的大小;
- 第二行输入N个空格分隔的整数,代表数组元素(元素取值范围:-10^9 ≤ A[i] ≤ 10^9)。
输出格式
- 将所有重复元素以空格分隔打印在一行;
- 若无重复元素,输出-1。
样例
输入
8 1 2 3 3 4 4 4 5
输出
3 4
解法思路
由于数组是有序的,相同元素必然连续排列。我们可以通过一次遍历统计每个元素的出现次数,筛选出出现次数>1的元素:
- 初始化当前元素为数组第一个元素,计数为1;
- 从第二个元素开始遍历,若与当前元素相同则计数加1,否则检查之前元素的计数是否>1,是则加入结果列表,然后重置当前元素和计数;
- 遍历结束后,别忘了检查最后一个元素的计数;
- 若结果列表为空则输出-1,否则输出列表元素。
代码实现(Python)
n = int(input()) arr = list(map(int, input().split())) if n < 2: print(-1) else: result = [] current = arr[0] count = 1 for num in arr[1:]: if num == current: count += 1 else: if count > 1: result.append(str(current)) current = num count = 1 # 处理最后一组元素 if count > 1: result.append(str(current)) print(' '.join(result) if result else -1)
内容的提问来源于stack exchange,提问作者Basavaraj. Malagi
相关产品推荐
相关产品推荐

