码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 167 two sum II

时间:2018-06-07 19:27:09      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:self   each   twosum   already   col   targe   else   收缩   pull   

167. Two Sum II - Input array is sorted

Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.

Note:

  • Your returned answers (both index1 and index2) are not zero-based.
  • You may assume that each input would have exactly one solution and you may not use the same element twice.

Example:

Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.

双指针问题,由于是排过序的列表,可以左指针指向起始,右指针指向末尾。两个指针根据条件收缩。最终找到符合的两个值。
如果numbers[left] + numbers[right] 大于target,则右指针左移,使和减小。
如果numbers[left] + numbers[right] 小于target,则左指针右移,使和增大。

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

leetcode 官网有效率更高的代码,感兴趣的可以搜下。



leetcode 167 two sum II

标签:self   each   twosum   already   col   targe   else   收缩   pull   

原文地址:https://www.cnblogs.com/jeroen/p/9152081.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!