You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找出有序数组中出现次数超过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;
  2. 从第二个元素开始遍历,若与当前元素相同则计数加1,否则检查之前元素的计数是否>1,是则加入结果列表,然后重置当前元素和计数;
  3. 遍历结束后,别忘了检查最后一个元素的计数;
  4. 若结果列表为空则输出-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:24:51