Python 3.7.3 提取序列递增元素时无法加入最后一个符合条件元素问题
问题修复说明
核心问题
- 你的判断逻辑仅会将满足
当前元素 < 下一元素的当前元素加入列表,而递增段的最后一个元素(示例中的4)因为比后续元素3大,不会触发加入逻辑,因此被遗漏。 - for循环体内的
index = index + 1是无效操作:for循环的迭代变量每次都会被range生成的下一个值自动覆盖,这行代码不会改变循环的迭代顺序,可以直接删除。
修复后代码
def max_increase(seq): if not seq: return [] current_seq = [] max_long_seq = [] for num in seq: if not current_seq or num > current_seq[-1]: current_seq.append(num) # 实时更新最长递增序列 if len(current_seq) > len(max_long_seq): max_long_seq = current_seq.copy() else: # 递增中断,重置当前序列 current_seq.clear() current_seq.append(num) return max_long_seq
逻辑说明
- 初始化两个列表,
current_seq用来记录当前正在遍历的递增段,max_long_seq用来保存遍历过程中找到的最长递增段 - 逐个遍历输入序列的元素:
- 如果当前段为空,或者当前元素大于当前段最后一个元素,说明满足递增条件,加入当前段
- 否则说明递增中断,清空当前段后将当前元素作为新段的起始
- 每次加入元素后检查当前段长度,如果超过已记录的最长段长度,就更新最长段
- 遍历结束后返回最长递增段即可,针对你的测试用例
[5,1,2,4,3]会直接返回[1,2,4],符合预期。
内容的提问来源于stack exchange,提问作者rusttree
相关产品推荐
相关产品推荐

