给定一个整数 k和一个排序数组 A(可以由正数和负数组成),从 A 输出 2 个整数,使得a-b=k
inO(n) time
和O(1) space
O(n logn) 解决方案:
- 遍历数组:
O(n)
- 对于 element
a[i]
,a[i]+k
使用二进制搜索在数组中查找:O(log n)
总时间:O(n logn)
O(n) 解决方案:
- 将数组的所有元素存储在哈希表中:
O(n)
- 对于元素a[i],检查哈希表中是否有a[i]+k:
O(1)
总时间:O(n)
空间:O(n)
但他想要一个额外空间的O(n)
解决方案O(1)
。有人知道吗?