[LeetCode] 167. Two Sum II - Input array is sorted_Easy tag: Hash/Two pointers
2019-05-31 10:22 Johnson_强生仔仔 阅读(195) 评论(0) 编辑 收藏 举报
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.
这个题目还是可以像[LeetCode] 1. Two Sum_Easy tag: Hash Table 用Hash table去做,T: O(n) S: O(n)
不过因为题目已经给了sorted array,所以可以用two pointers 去将S: 降为 O(1)
Code
class Solution: def twoSum2(self, nums, target): left, right = 0, len(nums) - 1 while left < right: total = nums[left] + nums[right] if total == target: return [left + 1, right + 1] elif total < target: left += 1 else: right -= 1