「剑指 Offer 57. 和为 s 的两个数字」
力扣题目链接[1]
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。...示例 1:
输入:nums = [2,7,11,15], target = 9
输出:[2,7] 或者 [7,2]
示例 2:
输入:nums = [10,26,30,31,47,60], target...遍历途中使得目标值减去当前值,如果哈希表中存在该值,则意味找到了两数,返回相应的值即可。
这样做的话,时间复杂度和空间复杂度均为O(n) 。但是没有充分利用题目的条件:有序数组。...分析:
由于数组是已排序的增序数组,因此可以通过声明指针分别指向数组的头部和尾部,并不断收缩来进行求解。
每次循环时,计算当前的两数之和。...如果总和小于目标值,需要右移左指针增加总和;如果总和大于目标值,需要左移右指针减少总和;如果总和等于目标值,返回两数组成的数组。
如果循环结束也没有找到,则返回空数组。