给定一个整数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(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(n)解决方案,并且额外空间复杂度为O(1)。有人有什么想法吗?