有一个业务上的算法思路请教一下!

2021-04-23 16:41:51 +08:00
 qwer666df
  1. 固定分类是 未开始,已完成。

  2. 中间的阶段是可以动态,不固定数量,所以出现的结果可能会是这种: 未开始、第一阶段、第二阶段、第三阶段、已完成。

  3. 从 Excel 中读出来的数据结构:

名称 第一阶段开始 第一阶段结束 第二阶段开始 第二阶段结束 第三阶段开始 第三阶段结束
A101 2020/5/1 2020/5/9 2020/5/6 2020/5/16 2020/5/14 2020/5/20
A102 2020/5/1 2020/5/9 2020/5/6 2020/5/16 2020/5/14 2020/5/20
  1. 每个阶段的规则定义:

    1. 未开始: 当前时间 小于 第一阶段的开始,这个时间范围都算。
    2. 第一阶段:第一阶段开始 到小于 max(第一阶段结束,第二阶段开始),的时间范围都算。
    3. 第二阶段:max(第一阶段结束,第二阶段开始) 到小于 max(第二阶段结束,第三阶段开始),的时间范围都算。
    4. 第三阶段:max(第二阶段结束,第三阶段开始) 到小于 max(第三阶段结束,第四阶段开始),的时间范围都算。
    5. 后面如果有其他以此类推。
    6. 已完成:当前时间 大于 第三阶段结束(也就是最后一条的结束时间),的时间范围都算。
    7. 如果当阶段是 已完成的前一个,那范围就是,小于 < 当前的结束时间。
  2. 问题就是, 我如何知道,现在数据是处于哪个阶段..

710 次点击
所在节点    问与答
1 条回复
dnnta
2021-04-23 18:49:24 +08:00
1. 直接按阶段日期顺序遍历,命中那个就是哪个。数据量不大的话,处理起来还是很快的。
2. 逻辑不严谨,比如 2020/5/7 不会命中任一阶段

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772756

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX