Two Sum II

这道题很基础,一种最标准的O(n)方法就好,即双指针一左一右往中间靠就行,其实这里的思维和二分法是一样的,原因是我们是从最小值和最大值之和开始搜寻的,最小值和最大值之和在整个数组中就是在中间位置,下面是代码

class Solution(object):
    def twoSum(self, numbers, target):
        """
        :type numbers: List[int]
        :type target: int
        :rtype: List[int]
        """
        end = len(numbers) - 1
        start = 0
        while start < end:
            if numbers[start] + numbers[end] == target:
                return [start + 1, end + 1]
            elif numbers[start] + numbers[end] < target:
                start += 1
            else:
                end -= 1
        return []

results matching ""

    No results matching ""