arrays - 在排序数组中找到两个整数,使得 a - b = k

标签 arrays algorithm

给定一个整数k和一个排序数组A(可以由正数和负数组成),从A中输出2个整数这样a-b=k O(n) 时间O(1) 空间

O(n logn) 解:

  1. 遍历数组:O(n)
  2. 对于元素 a[i],使用二进制搜索在数组中找到 a[i]+k:O(log n)

总时间:O(n logn)

O(n) 解:

  1. 将数组的所有元素存储在一个哈希表中:O(n)
  2. 对于元素 a[i],检查哈希表中的 a[i]+k 是否为:O(1)

总时间:O(n)

空间:O(n)

但他想要一个具有 O(1) 额外空间的 O(n) 解决方案。有人知道吗?

最佳答案

制作两个索引指针 - 左和右,将两者初始化为数组 (0) 的开头。如果 a[Left] + k > a[Right],增加 Right,否则增加 Left。相等时停止

关于arrays - 在排序数组中找到两个整数,使得 a - b = k,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10908663/

相关文章:

android:从字符串数组中获取项目并在 TextView 中一一显示

c - DDA 算法不为某些坐标绘制线条?

arrays - 用于对包含 32 个随机元素的列表进行排序的自适应排序算法与排序网络

javascript - 删除空白数组条目的过滤器没有错误,但不起作用(javascript)

java - 具有输入值的二维 boolean 数组

javascript - 使用 jQuery 遍历 HTML 表格中的项目

javascript - 使用 JavaScript 创建菜单树?

python - 最小垂直切片和

algorithm - March内存测试算法的实现

将来自多个片段的序列拼凑在一起的算法