![]() |
1
5
这是一个通用的、可重用的解决方案,而不是一个临时的、特定的解决方案。 (根据评论更新)
这些应该是你的Range类的一部分,所以可以这样命名:
如果您没有这些方法,那么您必须像这样调用它:
|
![]() |
2
2
我想看看是否有一个解决方案更优化的性能。 编辑:我假设输入列表已排序。 如果不是这样,我建议先对它进行排序,而不是试图将其放入算法中。排序仅限于( n 日志 n ),但如果你想把它摆弄进去,你很容易得到( n
作为旁白, |
![]() |
3
1
还有一个:
您可以直接使用它:
但是如果你有很多项,那么效率会很低,因为复杂性是O(n)。但是,由于只能合并同一类别中的项,因此可以按类别对它们进行分组并合并每个组,然后展平结果:
|
![]() |
4
0
假设列表已排序,并且范围不重叠,如您在问题中所述,这将在O(n)时间内运行:
这是假设您有一个
编辑: 这里有一个就地算法:
编辑:
|
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 6 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 6 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 10 月前 |
![]() |
Paul C · 在维基百科上,将二叉搜索树转换为排序链表的算法是否存在错误? 10 月前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 11 月前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 11 月前 |