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

如何编写程序找出连续出现次数最多的元素?

如何找出连续出现次数最多的元素

嘿,我来帮你搞定这个问题!你要找的是连续出现次数最多的元素——重点就在「连续」这俩字上,所以不能单纯统计元素总出现次数,得盯着相邻元素是不是同一个,记录每个连续段的长度才行。

先看你的示例输入:6 1 6 4 4 4 6 6,4连续出现了3次,而6最多只有连续2次,所以结果确实是4,你的需求完全合理。

先说说你现有代码的问题

你的思路方向是对的,但代码里有几个明显的bug:

  • 变量名重复使用:一开始c是输入的元素总数,后面循环里又把c赋值成x,这会直接搞乱后续的计数逻辑
  • while循环的逻辑错误:while h[x] != h[c]: n+=1这里,不仅条件不对,还很容易陷入无限循环,根本没法正确统计连续次数
  • 没有正确跟踪每个连续序列的起止,最后final数组里的内容也没法反映真实的连续次数

正确的解法思路

核心逻辑就是遍历列表,跟踪当前连续的元素和它的次数,同时记录目前为止的最大次数和对应的元素,步骤如下:

  1. 先处理边界情况:比如空列表或者只有一个元素的情况,直接返回对应结果
  2. 初始化几个关键变量:当前连续元素、当前连续次数、最大次数、结果元素
  3. 从第二个元素开始遍历列表:
    • 如果当前元素和正在跟踪的元素相同,就把当前连续次数加1
    • 如果不同,就把当前连续次数和最大次数比较:如果更大,就更新最大次数和结果元素;如果相等,可以选择保留先出现的或者后出现的元素(这里默认保留先出现的)
    • 然后重置当前跟踪的元素和次数为当前元素和1
  4. 遍历结束后,别忘了再检查最后一个连续序列——因为循环结束时,最后一个序列的次数还没和最大次数比较呢!

完整代码示例

# 获取输入:先输入元素个数,再逐个输入元素
try:
    count = int(input())
    nums = [int(input()) for _ in range(count)]
except ValueError:
    print("请输入有效的整数哦")
    exit()

# 处理空列表的情况
if not nums:
    print("列表是空的,找不到元素")
    exit()

# 处理只有一个元素的情况
if len(nums) == 1:
    print(nums[0])
    exit()

# 初始化跟踪变量
max_streak = 1
current_streak = 1
result = nums[0]
current_num = nums[0]

# 从第二个元素开始遍历
for num in nums[1:]:
    if num == current_num:
        current_streak += 1
    else:
        # 比较当前连续次数和最大次数,更新最大值
        if current_streak > max_streak:
            max_streak = current_streak
            result = current_num
        # 如果次数相等,这里选择不更新,保留第一个出现的最大连续元素
        # 要是想保留后出现的,把上面的>改成>=就行
        # 重置当前跟踪的元素和次数
        current_num = num
        current_streak = 1

# 检查最后一个连续序列,避免漏掉
if current_streak > max_streak:
    max_streak = current_streak
    result = current_num

print(f"连续出现次数最多的元素是:{result},一共连续出现了{max_streak}次")

测试你的示例

把你的示例输入8,然后依次输入6、1、6、4、4、4、6、6,代码会输出:
连续出现次数最多的元素是:4,一共连续出现了3次,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Yacine Alloul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:51:41