这个题是一个比较显然的双指针法,不赘述了。因为每个数都只会被扫描一次,所以这个算法的时间复杂度是O(N),空间复杂度是O(1)。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
left, right = 0, len(nums) - 1
while left < right:
s = nums[left] + nums[right]
if s < target:
left += 1
elif s > target:
right -= 1
else:
return [nums[left], nums[right]]
return []
PREVIOUSjz056II.数组中数字出现的次数II
NEXTjz057II.和为s的正数序列