兩種方法解決 Leetcode167. Two Sum II - Input array is sorted

1. 雙指針:

class Solution:
    """
    @param nums: an array of Integer
    @param target: target = nums[index1] + nums[index2]
    @return: [index1 + 1, index2 + 1] (index1 < index2)
    """
    def twoSum(self, nums, target):
        # write your code here
        start = 0 
        end = len(nums)-1
        while start<end:
            if nums[start]+nums[end]==target:
                return start+1,end+1
            if nums[start]+nums[end]>target:
                end -= 1
            if nums[start]+nums[end]<target:
                start += 1
        return None 

2. dictionary

class Solution(object):
    def twoSum(self, numbers, target):
        """
        :type numbers: List[int]
        :type target: int
        :rtype: List[int]
        """
        d={}
        for i in range(len(numbers)):
            if numbers[i] in d:
                return d[numbers[i]]+1,i+1
            else:
                d[target-numbers[i]]=i

最喜歡雙指針這種直觀的算法了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章