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

如何实现移除时间线中无序元素的算法?

算法需求说明

假设有一个设备记录你的生日派对,按记录顺序保存历史:

  • 你的10岁生日派对
  • 你的11岁生日派对
  • 你的12岁生日派对
  • 你的13岁生日派对

情况1:但该设备存在故障,有时会记录无效的生日(如下方第2条事件):

  • 你的10岁生日派对
  • 你的17岁生日派对
  • 你的12岁生日派对
  • 你的13岁生日派对

情况2:当然,你并非每年都举办生日派对,因此列表也可能如下所示:

  • 你的10岁生日派对
  • 你的11岁生日派对
  • 你的12岁生日派对
  • 你的14岁生日派对

显然,这是一个数字序列的算法问题。抱歉铺垫了这么多,我只是想构建一个“真实”场景,因为我的需求看起来可能有些突兀。我可以将其重新表述为:给定一个序列,我希望从最低点开始向上移动,过程中绝不向下。例如,序列[1, 2, 5, 4, 5, 8, 6, 7, 11, 9]里的5、8和11是无效元素,需要移除,处理后得到[1, 2, 4, 5, 6, 7, 9],以此满足从最低点开始向上,全程不向下的要求。

以下是该算法需要实现的几组示例:

doAlgo([]) == []
doAlgo([1]) == [1]
doAlgo([1, 2]) == [1, 2]
doAlgo([2, 2]) == [2, 2]
doAlgo([2, 2, 1]) == [1]
doAlgo([2, 1]) == [1]
doAlgo([1, 3, 2]) == [1, 2]
doAlgo([1, 2, 3, 4, 1]) == [1, 1]
doAlgo([5, 2, 3, 4, 1]) == [1]
doAlgo([5, 2, 3, 4, 1, 2]) == [1, 2]
doAlgo([5, 2, 3, 4, 1, 2, 1]) == [1, 1]
doAlgo([1,2,3,4,5,8,6,7,8,9]) == [1,2,3,4,5,6,7,8,9]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:45:33