小编b. *_*ten的帖子

算法挑战:合并日期范围

我面临一个有趣的问题:

  • 我有几个可以重叠的日期范围
  • 他们每个人都有一个名字

是否有可能"重叠"这些范围?也就是说,生成:

  • 一组新的范围,其中没有一个与其他范围重叠
  • 这个新范围中的每一个都有一个相应名称的列表

也许我可以让它更具图形化.这就是我的第一个:

a   |------------------------------|
b                    |-------------------|
c          |-----------------|
Run Code Online (Sandbox Code Playgroud)

这是我想要获得的:

    |------|---------|-------|-----|-----|
        a      a,c     a,b,c   a,b    b
Run Code Online (Sandbox Code Playgroud)

我找到了一种有效的解决方案,但不优雅:

  1. 我将每个范围(从,到)转换为天数列表(d1,d2,d3等)
  2. 我按天分组
  3. 我聚合包含相同名称的组来重新创建范围

你能想到更好的解决方案吗?我正在使用C#,但任何与语言无关的想法都会非常感激.谢谢!

c# linq algorithm optimization datetime

15
推荐指数
1
解决办法
2818
查看次数

标签 统计

algorithm ×1

c# ×1

datetime ×1

linq ×1

optimization ×1