数组动态时的最小查询范围

2023-12-12

我有一个大小为 1 的数组 A(0 索引)。

我想找到数组 A 中索引 k1 (k1>=0) 和 A.size()-1(即最后一个元素)之间的最小值。

然后我会在数组末尾插入值:(给定范围内的最小元素+一些“随机”常量)。然后我有另一个查询来查找索引 k2 和 A.size()-1 之间的最小值。我发现,在末尾插入值:(给定范围内的最小值+另一个“随机”常量)。我必须做很多这样的询问。

假设我有 N 个查询。朴素的方法需要 O(N^2)。

不能使用线段树,因为数组不是静态的。但是,一个聪明的方法是为大小为 N+1 的数组创建线段树;事先并用无穷大填充未知值。这会给我 O(Nlog N) 复杂度。

还有其他方法可以实现 NlogN 复杂度甚至 N 吗?


这里完全没有必要使用树这样的高级数据结构。只需一个简单的局部变量和列表就可以完成这一切:

创建一个空列表(例如minList).

end索引并转到start的索引最初给出的数组,放入最小值(直到该索引end)在列表的前面(即做push_front).

假设提供的数组是:

70 10 50 40 60 90 20 30

所以得到的结果是minList将:

10 10 20 20 20 20 20 30

这样做之后,你only需要跟踪其中的最小值新追加的连续修改数组中的元素(例如,minElemAppended).

假设你得到k = 5 and randomConstant= -10,那么

minElemAppended = minimum(minList[k-1] + randomConstant, minElemAppended)

通过采用这种方法,

  • 您不需要遍历附加部分,甚至不需要遍历初始给定数组。
  • 您可以选择根本不附加元素。
  • 时间复杂度:O(N)处理N查询。
  • 空间复杂度:O(N)来存储minList
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数组动态时的最小查询范围 的相关文章

  • C:将 unsigned char 数组转换为signed int(反之亦然)

    我正在尝试将无符号字符数组缓冲区转换为有符号整数 反之亦然 下面是演示代码 int main int argv char argc int original 1054 unsigned int i 1054 unsigned char c
  • 在 C# 中对由整数组成的多维 [] 数组进行排序

    我有以下数组 private int testSamples new testSamples 101 101 它应该代表一个名册 第0到100列 第0到100行 在这个名册中 掉落了各种化学液体 我为之做这件事的人希望以这样的方式工作 他可
  • 如何求两个地点的经纬度距离?

    我有一组位置的纬度和经度 怎么找distance从集合中的一个位置到另一个位置 有公式吗 半正矢公式假定地球是球形的 然而 地球的形状更为复杂 扁球体模型会给出更好的结果 如果需要这样的精度 你应该更好地使用文森特逆公式 See http
  • 使用 javascript Array reduce() 方法有什么真正的好处吗?

    reduce 方法的大多数用例都可以使用 for 循环轻松重写 对 JSPerf 的测试表明 reduce 通常会慢 60 75 具体取决于每次迭代内执行的操作 除了能够以 函数式风格 编写代码之外 还有什么真正的理由使用reduce 吗
  • 调整巨大数组的大小

    我正在我的应用程序中处理巨大的数组 需要调整它们的大小 假设您有一个 2Gb 的阵列 并且想要将其大小调整为 3Gb 有没有办法在暂时不需要 5Gb 的情况下调整它的大小 例如 给定一个 1Gb 堆 使用 Xmx1G flag public
  • Fortran 指针数组

    同样 Fortran 中的指针数组 好吧 我有一个派生类型 type t context pointer type t context pointer p ctx end type t context pointer 当我在主程序中执行以下
  • 当给定块大小时反转单链表

    有一个单连接链表 并给出了块大小 例如 如果我的链表是1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 NULL我的块大小是4然后反转第一个4元素 然后是第二个 4 个元素 问题的输出应该是4 gt 3 gt 2 g
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • Java 2d 游戏中的路径查找?

    本质上它是我正在开发的一款吃豆人克隆游戏 我有一个 Enemy 类 并创建了该类的 4 个实例 它们都代表游戏的 4 个幽灵 所有幽灵都会在屏幕的随机区域启动 然后它们必须朝着吃豆人角色前进 当玩家控制吃豆人并移动它时 他们应该跟随它并尽可
  • 为什么这个算法的Big-O复杂度是O(n^2)?

    我知道这个算法的大O复杂度是O n 2 但我不明白为什么 int sum 0 int i 1 j n n while i lt j sum 即使我们设定了j n n一开始 我们在每次迭代期间递增 i 并递减 j 因此最终的迭代次数不应该比n
  • 如何获得n个具有不同元素数量的数组的所有可能组合?

    我有一些在编程时未知的数组数量 也许是 3 或 4 或 7 每个数组都有一些元素 即 a 1 2 3 4 b 6 7 5 2 1 c 22 4 6 8 4 8 5 4 d e f g 我想通过从每个数组中采样一个数字来获得所有可能的组合 例
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 如何计算 3D Morton 数(交织 3 个整数的位)

    我正在寻找一种快速计算 3D Morton 数的方法 这个网站 http www graphics stanford edu seander bithacks html InterleaveBMN有一个基于幻数的技巧来处理 2D Morto
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 比较数组中的文件、从文本文件中删除行、函数、日志记录

    所以我创建了这两个数组 Approved Shares 和 Current Shares Reads Approvedshare txt and makes the txt file into an array public objFSO
  • c# GDI边缘空白检测算法

    我正在寻找解决方案检测边缘空白c 位图 来自 c 托管 GDI 库 图像将是透明的 or white 大多数 400x 图片的尺寸为 8000x8000px 边缘周围有大约 2000px 的空白 找出边缘的最有效方法是什么 x y 高度和宽
  • 为什么当你删除一个项目时,Javascript 中的数组不调整大小? [复制]

    这个问题在这里已经有答案了 在许多语言中 标准动态列表 不是固定大小的数组 类型将在删除项目后调整大小 Python myList a b c del myList 0 print len myList Prints 2 C var myL
  • 使用什么算法来确定使系统达到“零”状态所需的最小操作数?

    这是一种更通用的问题 不是特定于语言的 有关要使用的想法和算法的更多信息 系统如下 它登记朋友群体之间的小额贷款 Alice and Bill要去吃午饭 比尔的卡坏了 所以爱丽丝支付了他的餐费 10 美元 第二天Bill and Charl
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va

随机推荐

  • 为什么 SQLSTATE[HY000]: 一般错误?

    这是一个用于注册组长及其伙伴的代码
  • 用于年龄验证的正则表达式,仅使用 Javascript 接受 0-200 之间的年龄

    我想要一个允许用户仅输入 0 到 200 之间的数字的正则表达式 我已经尝试过这个但它不起作用 var age regex S 0 9 0 3 您可以比较数值本身 而不是正则表达式 var ageValue 50 get the input
  • Matplotlib:外部图例,分布在多个子图中

    我有一个包含 2 个子图的图 所有子图共享相应的图表 即相同颜色的相同标签 我想在图的顶部有一个图例 延伸到两个子图 类似于下面的代码 import numpy as np import matplotlib pyplot as plt x
  • 请求标头中的 JWT 与接收 .Net Core API 时不一样

    当我从 Angular 应用程序向 Net Core 2 API 发出请求时 JWT 与请求标头中发送的 JWT 不同 启动 cs public class Startup public Startup IHostingEnvironmen
  • 从字符串中分割特殊字符和字母

    我有一个字符串值 我包含字母 特殊字符 数字和空格的组合 但我只想检索数字 my code Dim str1 As String 123456habAB Dim str2 As String Regex Replace str1 gt
  • 双截断输出的 7 个字符

    double fat 0 2654654645486684646846865584656566554566556564654654899866223625564668186456564564664564 cout lt
  • 无法删除被授予连接数据库的角色

    我正在使用 PostgreSQL 10 4 我发现了一个奇怪的行为 如果我们创建一个角色并将其授予CONNECT数据库 CREATE ROLE dummy GRANT CONNECT ON DATABASE test TO dummy 那么
  • 引用方法内的对象时出现问题

    internal class Program public class Creature public int health public int damage public int coins public static void Hit
  • 如何将现有的 iPhone 应用程序移植到 iPad

    我有一个 iPhone 应用程序 现在我想将该应用程序转换为可在所有 iPhone iPod iPad 设备上运行的通用应用程序 那么 从哪里开始 我需要做哪些事情呢 任何帮助 链接 示例应用程序 任何东西 都将受到高度赞赏 提前致谢 我最
  • iPhone OS 应用程序的可用内存

    是否有函数或常量定义 iPhone OS 中应用程序的可用内存量 我正在寻找一种独立于设备 iPod touch iPhone iPad 的方式来了解应用程序还剩多少内存 该函数将返回可用内存 以字节为单位 import
  • 如何定义二维数组?

    我想定义一个没有初始化长度的二维数组 如下所示 Matrix 但这给出了一个错误 IndexError 列表索引超出范围 从技术上讲 您正在尝试为未初始化的数组建立索引 在添加项目之前 您必须首先使用列表初始化外部列表 Python 称之为
  • 符号函数矩阵

    我想在 Matlab 中定义一个符号函数 而不是变量 矩阵 在工作区中 我希望它成为大小为 N M 的类 symfun 的元素 其中N and M是正整数 你不能创建一个矩阵symfun类元素 可能出于同样的原因无法创建函数句柄矩阵 但您可
  • 如何在 PHP 中发送 HTTP 请求并检索响应(通过标头微调)?

    我必须向 URL 发送 HTTP 请求并检索响应和标头 我不仅对页面内容感兴趣 而且对所有标题也感兴趣 最佳解决方案是什么 插座 PEAR 库不可访问 PHP 配置不可编辑 你应该使用curl 文档中的快速示例
  • 如何在与主程序不同的线程中编写套接字服务器(使用 gevent)?

    我正在开发一个 Flask gevent WSGIserver Web 服务器 它需要使用 XML 通过两个套接字与硬件设备进行通信 在后台 一个套接字由客户端 我的应用程序 启动 我可以向设备发送 XML 命令 设备在不同的端口上应答并发
  • Objective-C / C 从 SecKeyRef 中提取私钥(模数)

    我需要一种干净的方法来提取我的服务器公钥并将其与本地数据进行比较 以防止将来密钥过期 更新 但我似乎无法获取 256 位密钥或将其表示为有用的数据为了比较 这是我到目前为止所拥有的 BOOL trustCertFromChallenge N
  • 提升消费者进程中的共享内存和同步队列问题/崩溃

    我正在尝试从子进程消耗 C 中的同步队列 我在 C 中使用这个同步队列 http www internetmosquito com 2011 04 making thread safe queue in c i html 我修改了队列以在b
  • Selenium webdriver 在尝试通过 ANT 运行时抛出异常

    我正在通过 Eclipse 使用 selenium 运行我的 UI 自动化测试用例 它运行良好 没有任何问题 当我在 Eclipse 中执行此操作时 会启动浏览器 执行测试用例 更新结果 然而 当我尝试通过 ANT 运行它时 它开始给我带来
  • Python字典复制方法

    我对字典复制方法有疑问 例如 假设我有 gt gt d pears 200 apples 400 oranges 500 bananas 300 gt gt copy dict d copy 现在 如果我检查 d 和 copy dict 的
  • 如何使用 css 在同一位置显示 2 个元素?

    div ul class social icon li a href class social facebook i class fa fa facebook i i class fa fa facebook ff i a li ul di
  • 数组动态时的最小查询范围

    我有一个大小为 1 的数组 A 0 索引 我想找到数组 A 中索引 k1 k1 gt 0 和 A size 1 即最后一个元素 之间的最小值 然后我会在数组末尾插入值 给定范围内的最小元素 一些 随机 常量 然后我有另一个查询来查找索引 k