jz057I.和为s的数字

 

题目链接

这个题是一个比较显然的双指针法,不赘述了。因为每个数都只会被扫描一次,所以这个算法的时间复杂度是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 []