我的数学能力有限! 我需要一种有效的方法将网络范围缩小到超集,例如如果我输入以下IP范围的列表:
- 1.1.1.1 到 2.2.2.5
- 1.1.1.2 到 2.2.2.4
- 10.5.5.5 到 155.5.5.5
- 10.5.5.6 到 10.5.5.7
我想返回以下范围:
- 1.1.1.1 到 2.2.2.5
- 10.5.5.5 到 155.5.5.5
注意:输入列表未排序(尽管它们可以被排序)。做这件事的朴素方法是检查列表中的每个范围,以确定输入范围x是否是子集,如果是,则不插入范围x。然而,每当插入新范围时,它可能是现有范围的超集,因此必须检查现有范围以查看它们是否可以折叠(例如从我的列表中删除)。