【发布时间】:2018-07-05 07:35:19
【问题描述】:
我有一个价值列表Tuple 如下:
List<(int, int)> values = new List<(int, int)>
{
(12, 15),
(18, 30),
(18, 27),
(27, 30)
};
现在我想删除这个列表中的对,它在更宽对的范围内。
例如:(18, 27) 和(27, 30) 在(18, 30) 的范围内。所以,我想删除它下面的那些对。
所以最终的输出一定是:
(12, 15)
(18, 30)
我正在考虑使用 LINQ 的 .RemoveAll() 方法删除这些对,但我不知道该怎么做。
任何帮助将不胜感激。
【问题讨论】:
-
您能否解释一下:(18, 30) 同时包含 (18, 27) 和 (27, 30)?
-
为什么 (18, 30) 比 (27, 30) 大?
-
如果
(18, 30)包含(27, 30)。它是否也包含(30, 27)? -
那么为什么它会选择
(0, 9)而不是更大范围的(10, 100)呢?您的规范中缺少一些细节。它是否应该检查哪个范围包含最多的子范围,并使用那个?您的规范的问题是未定义的术语biggest pair。如果有两个范围包含相同数量的子范围,它应该选择哪个?这两个中最大的?还是第一个? -
因此,更清楚地说明要求的方式是:
Return all ranges that are not included in any other range。