确定范围重叠,包括小于和大于范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了确定范围重叠,包括小于和大于范围相关的知识,希望对你有一定的参考价值。

我有一个整数范围列表。当我创建一个新范围(x-y)时,如何检查列表(使用LINQ或其他方式)并确定新创建的范围是否满足要插入列表的条件:

  • 如果新项目与任何现有项目重叠,则无法插入新项目
  • 如果新项目的x小于任何项目,则可以插入新项目
  • 如果新项目的x大于任何项目,则可以插入新项目 <----O----> <---------> ^ NOT OK <----O----> <---------> ^ NOT OK <----O----> <--> ^ OK <----O----> <--------------> ^ OK <----O----> <---> ^ OK <----O----> <---> ^ OK

如果唯一的规则是物品永不重叠(但可以是相同的限制),我得到它的工作

if (List.Any(listItem => listItem.X <= newItem.Y && listItem.Y >= newItem.X)) return false;

当我需要检查其他两个条件时,问题就出现了。这甚至可能吗?谢谢!

编辑: 解决方案类似于Apoorva Jhanwer的答案,TrueForAll方法帮助了我。

if (newList.TrueForAll(listItem => 
    newItem.X < listItem.X && newItem.Y > listItem.Y 
    || newItem.X > listItem.X && newItem.Y < listItem.Y 
    || newItem.X < listItem.X && newItem.Y < listItem.X 
    || newItem.X > listItem.Y && newItem.Y > listItem.Y )) return true;
答案
   if (list.TrueForAll(listItem => (newItem.X < listItem.X && newItem.Y > listItem.Y )||(newItem.X > listItem.X && newItem.Y < listItem.Y)))return true;

只需检查是否属实

以上是关于确定范围重叠,包括小于和大于范围的主要内容,如果未能解决你的问题,请参考以下文章

SQL范围条件小于、大于和之间

如何确定Javascript中项目网格中的选择范围之间的重叠

python怎么实现0到100的范围和大于100,小于0

给定 2 个整数列表如何找到不重叠的范围?

使用_contains过滤大于,小于和范围的JSON字段django

java 给出了很多整数范围;合并重叠范围。通过对范围进行排序来确定运行时间,因此时间复杂度为n lg(n)。