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

如何修改列表元素使其成为单调递减序列?

列表元素调整实现方案

需求明确

遍历数字列表,从左到右检查每个相邻元素:若后一个元素大于前一个,则将后一个元素调整为与前一个元素相同的数值。调整结果需符合以下示例:

  • 示例1:输入 first = [100, 110, 60],输出 ans = [100, 100, 60]
  • 示例2:输入 arr = [60,50,60],输出 ans = [60, 50, 50]
  • 示例3:输入 arr = [20, 100, 150],输出 ans = [20, 20, 20]

正确实现思路

核心是从左到右依次迭代,维护当前基准值:

  1. 初始化结果列表,保留原列表第一个元素作为初始基准
  2. 从第二个元素开始,每个元素与结果列表的最后一个元素(已调整完成的前一个值)比较:若当前元素更大,则替换为基准值;否则保留原数值

代码实现

def adjust_list(arr):
    if not arr:  # 处理空列表边界情况
        return []
    ans = [arr[0]]
    for num in arr[1:]:
        if num > ans[-1]:
            ans.append(ans[-1])
        else:
            ans.append(num)
    return ans

# 测试示例
print(adjust_list([100, 110, 60]))  # 输出 [100, 100, 60]
print(adjust_list([60,50,60]))     # 输出 [60, 50, 50]
print(adjust_list([20, 100, 150])) # 输出 [20, 20, 20]

原代码问题分析

你提供的代码存在以下问题:

  • 重复判断同一条件三次,逻辑冗余
  • 变量名混乱:使用了arr却出现未定义的a
  • 逻辑错误:每次判断后追加不同内容,未按需求统一替换为前一个元素值,最终会生成长度不符合预期的结果列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:50:22