范围交集/并集

2024-03-01

我正在开发一种编程语言,我想为其提供Range数据类型,目前不像通常那样是一个成对的列表int values (x,y)的约束条件是x < y。我说不像通常那样,因为通常范围只是一对,但在我的情况下,它超过,例如允许

1 to 5, 7 to 11, 13 to 22

全部包含在一个对象中。

我想提供两个函数来生成两个范围的并集和交集,它们应该包含几个范围中最少数量的非重叠间隔..例如

1 to 5 || 3 to 8 = 1 to 8
1 to 5 && 3 to 8 = 3 to 5
(1 to 3, 4 to 8) && 2 to 6 = (2 to 3, 4 to 6)

where ||是并集并且&&是交集。

现在,如前所述,它们的实现只是一个列表。我知道存在更合适的数据结构(区间树),但现在我更关心从其他列表的并集/交集构建新列表。

实现这两个功能的最先进算法是什么?

提前致谢


由于您不想处理区间树而仅使用列表,因此我建议您将范围表示保留为按 x 坐标排序的不相交区间列表。

给定两个列表,您可以通过执行某种合并步骤来计算并集和交集,就像我们在合并排序列表中所做的那样。

Example:

对于 L1 和 L2 的并集:

创建 L 为空列表。

从 L1 和 L2 中取出 x 最小的区间,放到 L 上。

现在再次取最小的,与 L 的最后一个元素进行比较,并决定是否需要合并它们(如果重叠)或在 L 的末尾附加新的间隔(如果它们不重叠)并继续处理,就像我们在合并两个排序列表。

完成后,L 将是其间隔按 x 排序且不相交的并集。

对于交叉点,你可以做类似的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

范围交集/并集 的相关文章

  • 范围联合无序

    我正在尝试按特定顺序复制各种范围 然后将它们从工作簿粘贴到不同的工作簿中 现在 我已经设置了范围 例如 Set rg ws1 Range A2 A i Offset rowOffset 1 columnOffset 0 Set rg1 ws
  • 给定一个点向量(可能无序),找到多边形(不是凸包)

    我目前有一个点向量 vector
  • 直观地执行不同的排序算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 数组中最远的相等元素

    假设你有一个未排序的数组 你如何找到两个相等的元素 使它们成为数组中最远的元素 例如8 7 3 4 7 5 3 9 3 7 9 0ans 将是7 9 7 1 8 我想到了以下几点 initialise max 0 using hashing
  • 快速排序应用程序中这些交换代码行的目的是什么?

    我试图理解快速排序的实现或应用程序以找到第 k 个最小元素 这是我试图理解的代码 public int quicksort int a int start int end int k if start lt end int pivot pa
  • 神经网络的层和神经元

    我想更多地了解神经网络 我正在开发一个 C 程序来制作神经网络 但我坚持使用反向传播算法 很抱歉没有提供一些工作代码 我知道有很多库可以用多种语言创建神经网络 但我更喜欢自己制作一个 关键是我不知道要实现特定目标 例如模式识别或函数近似或其
  • 填充体积算法

    我有一个具有一定尺寸长度 宽度 高度的盒子 我有不同长度 宽度 高度的物品 是否有现有的算法可以确定放入盒子中的最佳物品 这称为装箱 切割库存 背包问题 并且是 NP 难问题 一般来说 您只能通过使用启发式方法获得近似解 请参见示例 htt
  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3
  • Python Pandas:沿一列比较两个数据帧,并返回另一个数据帧中两个数据帧的行内容

    我正在处理两个 csv 文件并作为数据框 df1 和 df2 导入 df1 有 50000 行 df2 有 150000 行 我想将 df2 的 时间 与 df1 求时间差并返回所有列的值 对应相似的行 保存在df3中 时间同步 例如 35
  • 数独算法,暴力破解[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 如何为多边形创建内部螺旋?

    对于任何形状 我如何在其内部创建类似形状的螺旋 这与边界 使用 Minkowski 和 类似 尽管它会是相同形状的螺旋 而不是在形状内部创建相同的形状 我找到了这个 http www cis upenn edu cis110 13su le
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • Python 旅行商贪婪算法 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 因此 我为旅行推销员问题创建了一种排序 并按 x 坐标和 y 坐标进行排序 我正在尝试实施贪婪搜索 但无法做到 此外 每
  • 是否有加权水库采样的算法? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当数据流中的点具有相关权重时 是否有一种算法可以执行水库采样 Pavlos Efraimidis 和 Paul Spirakis 的算
  • 如何光栅化旋转矩形(通过 setpixel 在 2d 中)

    我有四个 2d 顶点 A B C D 的旋转矩形 我需要在像素缓冲区中 有效地 光栅化 绘制它 使用 setpixel x y 颜色 怎么做 我正在尝试使用一些代码 例如 convertilg a b c d do up down left
  • 求先递增后递减列表的最大值和最小值

    我尝试用谷歌搜索这个问题 但没有取得太大成功 我确信这个问题或类似问题有一个技术名称 但我似乎找不到答案 给定一个列表L整数 即严格递增 然后严格递减 找到该列表的最大值和最小值 例如 L可能 1 2 3 4 5 4 3 2 or 2 4
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 评估 CRC-32 实现中的差异

    我见过相同基本 CRC 32 算法的许多不同实现 如下所示 int remain int sbox SIZESBOX int dividend int bit for dividend 0 dividend lt SIZESBOX divi
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素

随机推荐

  • lambda 和成员函数指针的区别

    在我的回答中here https stackoverflow com a 74078452 11998382 巴里指出最好打电话views transform Planter getPlants 因为views transform Plan
  • 派生 Serde 的 Serialize 或 Deserialize 强制泛型类型可序列化,尽管它不需要

    My type A 它可以包含任何实现trait Trait 是可序列化的 尽管实现该特征的类型Trait也许不是 就我而言 它不可能 它是一个私有非对称密钥 extern crate serde macro use extern crat
  • 梯度下降和牛顿梯度下降有什么区别?

    我明白梯度下降的作用 基本上 它试图通过缓慢地沿着曲线移动来走向局部最优解 我想了解普通梯度下降法和牛顿法之间的实际区别是什么 我从维基百科上读到了这样一句话 牛顿方法使用曲率信息来采取更直接的路线 这直观上意味着什么 在局部最小值 或最大
  • 如何在 Java 中将 long 变量更改为时间戳?

    如何将长整型变量更改为时间戳变量 我可以将其转换为字符串 但我需要将其转换为时间戳才能在数据库中使用它 Timestamp 扩展了 java util Date 并且它有一个接受 long 的构造函数 像这样 import java sql
  • 如何在android中注册低电量广播接收器?

    我想注册低电量广播 如果电池状态达到某种程度 我想收到警报 如果您有任何想法请帮助我 您需要注册一个BroadcastReceiver for ACTION BATTERY LOW http developer android com re
  • Mathematica:未评估、延迟、保留、HoldForm、HoldAllComplete、等等

    我对所有旨在以某种方式阻止评估的内置 Mathematica 函数感到困惑 Unevaluated Defer Hold 以及超过六种形式Hold Mathematica 文档只是单独解释每个函数 而没有解释为什么选择其中一个函数 谁能对所
  • 在 ECMA 第 3 阶段使用提案在统计上是否安全?

    背景 我指的是 操作员 许多人喜欢并支持执行以下操作的想法 const obj hello 1 const obj2 world 2 obj Problem 与典型的语法相比 我个人更喜欢这种语法Object assign但最近当我开始在我
  • 如何使用 jQuery .ajax 来执行我的表单操作

    我改变了 php 和 jQuery 的编码风格 但是我的注册 reg form company bind submit function fancybox showActivity ajax type POST cache false ur
  • jQuery:调用后更改插件选项

    我自己制作了一个插件 用于在使用 jquery ui 对话框时设置一些东西 而不是调用 popup dialog options 我用这个 popup dialogPlugin options 并且dialogPlugin会调用 dialo
  • 将存储过程输入参数分配给局部变量是否有助于优化查询?

    我有一个需要 5 个输入参数的存储过程 该过程有点复杂 大约需要 2 分钟才能执行 我正在优化查询 所以 我的问题是 将输入参数分配给局部变量然后在过程中使用局部变量是否总是有帮助 如果是这样 它有什么帮助 我不会尝试解释参数嗅探的完整细节
  • 在 Go 中实现 Merkle 树数据结构

    我目前正在尝试在 Go 中实现默克尔树数据结构 基本上 我的最终目标是存储一小组结构化数据 最大 10MB 并允许该 数据库 轻松与分布在网络上的其他节点同步 请参阅相关资料 我已经在 Node 中相当有效地实现了这一点 因为没有类型检查
  • 访问 iPhone 地址簿中的人员信息

    我需要让用户有机会从地址簿中选择电话号码 所以我以苹果手册为例 但它只需要第一个号码 我如何让用户可以选择地址簿中的一个号码 IBAction adressBook UIButton sender ABPeoplePickerNavigat
  • 如何防止 CSS 渲染阻止我的网站?

    我正在尝试优化移动网页的加载速度 为此我正在使用该网站 https developers google com speed pagespeed insights https developers google com speed pages
  • 递归替换字典中的字符

    如何更改所有点 下划线 在字典的键中 给定一个任意嵌套的字典 我尝试的是编写两个循环 但随后我将仅限于两级嵌套字典 This brown muffins 5 green pear 4 delicious apples green apple
  • MySQL 可以检查该文件是否存在吗?

    我有一个表 其中保存硬盘上真实文件的相对路径 例如 SELECT FROM images gt id path 1 files 1 jpg 2 files 2 jpg 我可以创建一个查询来选择指向不存在文件的所有记录吗 我需要通过 MySq
  • 如何在 angular2/ionic 2 typescript 应用程序中使用 Numeral.js 库?

    我已经成功地在我的 angularJs 1 x 应用程序中使用 Numeral js 库以不同的格式格式化我的数字 这就是我使用 angular1 过滤器的方式 过滤器 js filter numeral function return f
  • MPI 运行错误“导致所有级别集体中止”

    我正在尝试使用 C 中的 MPI 编写并行程序 但是 当我运行我的程序时 我收到该消息并且我的程序被终止 我不知道该错误消息的原因 警告 无法读取 mpd hosts 或未提供主机列表 MPI 作业将仅在当前计算机上运行 解决方案正在启动
  • 配置文件标记为重复的 Exceptionless 包

    不确定我的项目发生了什么 但是当我尝试运行它时 我收到了错误消息Could not load file or assembly Exceptionless Mvc or one of its dependencies Eceptionles
  • Git:如何分析具有多文件历史记录的代码?

    我即将在现有项目中移动大量文件 在执行此操作之前 我想牢牢掌握一些用于分析具有多文件历史记录的代码的技术 如何使用git来询问 这行代码是从哪里来的 当内容在其生命周期内移动过多个文件时 我知道 git 不会明确地跟踪重命名 有充分的理由
  • 范围交集/并集

    我正在开发一种编程语言 我想为其提供Range数据类型 目前不像通常那样是一个成对的列表int values x y 的约束条件是x lt y 我说不像通常那样 因为通常范围只是一对 但在我的情况下 它超过 例如允许 1 to 5 7 to