LeetCode | 0167. Two Sum II - Input array is sorted two numbers and II - an ordered array of input [Python]

LeetCode 0167. Two Sum II - Input array is sorted two numbers II - Easy input sorted array [] [] [Python double pointer]

topic

English topic Link

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.

translation

Chinese topic Link

Given an ordered array is sorted in ascending order according to find the two numbers such that their sum is equal to the sum of the target number.

Function should return the two index values ​​and index1 index2, which must be less than index1 index2.

Description:

  • Return values ​​of the index (index1, index2 and) is not zero.

  • You can assume that each input corresponding to only the only answer, but you can not reuse the same elements.

Example:

输入: numbers = [2, 7, 11, 15], target = 9
输出: [1,2]
解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。

Thinking

Double pointer

left pointer points to the end of the head, right pointer points to the head from the tail, and then determines whether the two numbers is equal to target.

Time complexity : O (n)

Python code

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:
            if numbers[left] + numbers[right] == target:
                return [left + 1, right + 1]
            elif numbers[left] + numbers[right] > target:
                right -= 1 
            else:
                left += 1 
        return []

Code address

GitHub link

Published 298 original articles · won praise 391 · Views 250,000 +

Guess you like

Origin blog.csdn.net/Wonz5130/article/details/104271994