在线性时间和常量空间中查找数组中缺失和重复的元素

2023-12-10

给你一个数组N64 位整数。 N可能非常大。您知道每个整数 1..N 在数组中都会出现一次,除了有一个整数缺失和一个整数重复。

编写一个线性时间算法来查找丢失和重复的数字。此外,您的算法应该在较小的恒定空间中运行,并且保持数组不变。

Source: http://maxschireson.com/2011/04/23/want-a-job-working-on-mongodb-your-first-online-interview-is-in-this-post/


如果数组中存在所有数字,则总和将为N(N+1)/2.

通过在 O(n) 内对数组中的所有数字求和来确定实际总和,令其为Sum(Actual).

缺少一个号码,就这样吧j并且有一个数字重复,令此为k。这意味着

总和(实际)= N(N+1)/2 + k - j

由此衍生出

k = 总和(实际)-N(N+1)/2 + j

Also we can calculate the sum of squares in the array, which would sum up to n3/3 + n2/2 + n/6 if all numbers were present.

现在我们可以计算 O(n) 中的实际平方和,令其为Sum(Actual Squares).

Sum(Actual Squares) =n3/3 + n2/2 + n/6 + k2 - j2

现在我们有两个方程可以确定j and k.

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

在线性时间和常量空间中查找数组中缺失和重复的元素 的相关文章

  • 一种良好且简单的随机性测量方法

    获取一长整数序列 例如 100 000 个 并返回序列随机性的测量值的最佳算法是什么 该函数应返回单个结果 如果序列并非完全随机 则返回 0 如果完全随机 则返回 1 如果序列有点随机 它可以给出介于两者之间的东西 例如0 95 可能是一个
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • 素数生成器算法

    我一直在尝试解决素数生成算法的SPOJ问题 这是问题 彼得想为他的密码系统生成一些素数 帮助 他 你的任务是生成两个给定之间的所有素数 数字 Input 输入以单行中测试用例的数量 t 开始 t Output 对于每个测试用例 打印所有素数
  • 线段树java实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你知道 二进制 的良好实现吗线段树 http en wikipedia org wiki Segmen
  • 简单的排名算法

    我需要创建一个民意调查 按照项目的好坏顺序创建一个排名列表 我打算向每个用户展示两个项目 让他们选择一个他们认为更好的项目 然后多次重复这个过程 它有点类似于您在社交网络电影 我应该如何根据收到的答案对项目进行排名 看着那 这ELO国际象棋
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • LRU算法,实现这个算法需要多少位?

    我有一个关于 LRU 算法的小问题 如果您有一个包含四个块的高速缓存 那么需要多少位来实现该算法 假设您指的是 4 路组关联缓存 完美 LRU 本质上是按照使用顺序为每一行分配一个精确的索引 您也可以将其视为 年龄 因此 4 个元素中的每一
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 将古吉拉特语文本插入 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
  • 贝尔曼福特算法可以有任意的边顺序吗?

    我刚刚开始学习新算法 但当我阅读 极客为极客而写的贝尔曼福特算法 时 我陷入了困境 http www geeksforgeeks org dynamic programming set 23 bellman ford algorithm h
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait
  • 排序矩阵的选择算法

    这是谷歌面试问题 给定一个 N N 矩阵 所有行均已排序 所有列均已排序 找到矩阵的第 K 个最大元素 在 n 2 中执行它很简单 我们可以使用堆或合并排序 n lg n 对它进行排序 然后得到它 但是有没有更好的方法 比 n lg n 更
  • 调度算法,找到设定长度的所有非重叠区间

    我需要为我的管理应用程序实现一种算法 该算法将告诉我何时可以将任务分配给哪个用户 我实现了一个蛮力解决方案 它似乎有效 但我想知道是否有更有效的方法来做到这一点 为了简单起见 我重写了算法以对数字列表进行操作 而不是数据库查询等 下面我将尝
  • 语义差异实用程序[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试找到一些语义差异 合并实用程序的好例子 比较源代码文件的传统范例是通过比较行和字符来工作的
  • 领域驱动设计与模型驱动架构

    我很好奇 领域驱动设计和模型驱动架构有什么区别 我的印象是他们有某些相似之处 你能启发我吗 Thanks 不要不同意上面的大部分内容 尽管它可能值得稍微扩展一下 DDD 中最重要的一个概念是关注问题域 将对技术的痴迷放在一边 主要集中于对您
  • 人们今天使用的可扩展语言是什么?

    维基百科说 可扩展编程是计算机科学中使用的一个术语 描述一种计算机编程风格 重点关注扩展编程语言 编译器和运行时环境的机制 例如 Tcl 允许您编写自己的控制结构 看here http wiki tcl tk 685 我有兴趣编制在实际代码

随机推荐

  • Android 版 Javafx 的音频性能(MediaPlayer 和 NativeAudioService)

    我使用 JavaFX 创建了一个运行良好的桌面游戏 20000 Java 行 由于它是一个游戏 实时约束很重要 玩家操作的响应时间 最终目标是在 Android 上运行该应用程序 我几乎已经完成了从PC到Android的 Java代码传输
  • 引用 CSS 文件时,IE 不支持基本元素中的相对路径

    我有一个网站使用base tag为相对 URL 设置绝对路径 它在我测试过的所有浏览器中运行良好 除了 IE 大惊喜 根据 IE 对 CSS 文件的请求 它似乎没有注意到基本标签 它确实承认基本标签以及页面上的其他所有内容 为什么会发生这种
  • pyplot.show() 重新打开旧的 tkinter 对话框

    编辑 这似乎是 Mac OS 系统上仅限于 Tcl Tk 的问题 因此 如果您没有这方面的经验 这个话题可能没有意义 None
  • pentaho Spoon/pid:如何每次将文件移动到不同名称的文件夹?

    我每个月都会有新的文本文件 从中提取数据并进行一些转换 在每个月底 我需要将这些文件移动到名称为当前日期的文件夹中 这意味着 目标文件夹的名称每次都不同 我之前迈出了一步move files创建一个文件夹 其名称为当前日期 exp 2019
  • 将 uint8_t 数据与字符串进行比较

    这听起来可能有点奇怪 或者问题可能是一个微不足道的问题 但在我一生的大部分时间里 我都在使用 PHP 编程 是的 我知道这听起来如何 所以当我转向 C 时 有些东西对我来说非常陌生 由于 php 习惯 所以我使用 struct 加载 wav
  • 如何从用户输入中打印单个单词

    如何从java中的用户输入中打印出单个单词 例子 用户输入 我们爱妈妈 她是最好的 该程序假设打印 mom 因为第一个和最后一个字符是相同的 我的代码最后没有打印任何内容 这是我的代码 Scanner s new Scanner Syste
  • 如何将 javascript (js) Map 传递给 Spring Boot Controller?

    我有一个包含键值对的 Java 脚本映射 我需要将其发送到 spring boot 控制器 例子 var myMap new Map myMap set 1 value1 myMap set 2 value2 我无法在 Spring Boo
  • 如何为暴露多个端口的服务配置 Istio 的虚拟服务?

    我有一个暴露多个端口的容器 因此 为部署配置的 kubernetes 服务如下所示 kind Service apiVersion v1 metadata name myapp labels app myapp spec selector
  • Angular 2 AOT 不像我的组件中的 moduleId

    我该如何解决这个问题 据我所知 JIT 需要组件上的 moduleId 来查找模板和样式 如果组件有 但是 AOT 不使用模块 并且在编译 AOT 时会出现 找不到名称 模块 错误 我不想检查所有模块并删除 AOT 的 Id 因为我仅使用
  • 在 Lucene 中使用 WikipediaTokenizer 的示例

    我想在 lucene 项目中使用 WikipediaTokenizer http lucene apache org java 3 0 2 api contrib wikipedia org apache lucene wikipedia
  • 定位已检查输入的标签

    如果我有一个包含在标签内的无线电输入 那么在检查输入时如何定位标签 div p Payment Plan p div
  • 如何对包含 R 函数的 pyspark RDD 进行分区

    import rpy2 robjects as robjects dffunc sc parallelize 0 robjects r rnorm 1 robjects r runif dffunc collect Outputs 0
  • Eigen 中三元运算符的类型错误

    我正在用 C 编写一个类来概括两个稀疏矩阵求解器 SparseLU 和 Sparse Cholesky 当我尝试使用三元运算符时 它说操作数类型不兼容 但如果我使用 If 语句 代码就会编译 错误 2 错误 操作数类型不兼容 const E
  • FopFactory.newInstance() 时出现 Fop 异常

    我正在使用 struts 2 并且尝试使用 fop 从 xml 和 xsl 创建 pdf 文件 我在这两个网址的基础上开发我的代码http svn apache org viewvc xmlgraphics fop trunk exampl
  • 可观察链表

    在我的 WPF 应用程序中 我有一个 ItemsControl 其项目值取决于前一个项目显示的 ViewModel 是一个音频文件 分为可变长度的部分 我需要以这种方式显示它 右侧显示日期时间 这就是我需要计算的内容 我只知道每个部分的长度
  • 当 Kubernetes 中的 configmap 更新时重新启动 Pod?

    当配置映射更改 更新时 如何自动重新启动 Kubernetes Pod 和与部署关联的 Pod 我知道有人在讨论当配置映射更改时自动重新启动 Pod 的能力 但据我所知 这在 Kubernetes 1 2 中尚不可用 所以 我认为 我想做的
  • 在powerpoint vba中更改图表的数据源

    我在 PowerPoint 中有一个条形图 想要选择行 类别 1 4 请参阅屏幕截图1 取决于我在组合框中的选择 到目前为止 这是我的代码 Private Sub ComboBox1 Change With SlideShowWindows
  • Php.Advance周历一周[重复]

    这个问题在这里已经有答案了 可能的重复 在 PHP 中获取下一个 上一个 ISO 周和年份 我正在尝试编写一个脚本 该脚本将在表格中显示一周中的几天 并且如果单击按钮 该脚本将前进一周 我设法让它一直工作到年底 然后日期就全部出错了 他就是
  • 在 PHP 中使用聚合方法和新的 MongoDB 驱动程序类

    我是蒙戈新手 我尝试获取文档的子文档 这是我的文档 id ObjectId 5900ab35c720b210c000032c name B 1 providers id ObjectId 59030550c720b211dc005e9e n
  • 在线性时间和常量空间中查找数组中缺失和重复的元素

    给你一个数组N64 位整数 N可能非常大 您知道每个整数 1 N 在数组中都会出现一次 除了有一个整数缺失和一个整数重复 编写一个线性时间算法来查找丢失和重复的数字 此外 您的算法应该在较小的恒定空间中运行 并且保持数组不变 Source