不导入任何模块查找列表最长连续重复数字,修复long函数运行异常
问题修复方案
错误原因
long()函数存在两处逻辑缺陷:
- 仅在遇到不同数字时才会将当前连续序列长度与历史最大值比较,列表末尾的连续序列不会触发该比较逻辑,导致示例中末尾的3个连续4没有被统计到
- 连续计数的更新逻辑不严谨,计数和实际序列长度的对应关系存在偏差,相同数字累加后没有做最大值校验
修复后的代码
def long(lst): # 增加空列表防御逻辑,避免索引报错 if not lst: return 0, None current_num = lst[0] current_count = 1 # 初始计数为1,对应已经存在的首个元素 max_count = 1 max_num = lst[0] for i in range(1, len(lst)): if lst[i] == current_num: current_count += 1 # 相同数字累加后直接更新最大值,无需等待遇到不同数字 if current_count > max_count: max_count = current_count max_num = current_num else: # 遇到不同数字,重置当前计数和比对基准值 current_num = lst[i] current_count = 1 return max_count, max_num
验证效果
替换原long()函数后,输入1 1 2 3 4 4 4 0时,输出结果符合预期:
List: [1, 1, 2, 3, 4, 4, 4] The number is: 4 The largest size of consecutive numbers: 3
内容的提问来源于stack exchange,提问作者No Uce
相关产品推荐
相关产品推荐

