lintcode练习-56. 两数之和

描述

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target

你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1

你可以假设只有一组答案。

您在真实的面试中是否遇到过这个题?  是

样例

给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].

挑战

Either of the following solutions are acceptable:

  • O(n) Space, O(nlogn) Time
  • O(n) Space, O(n) Time

两个思路,一个是使用hash表映射,另一个是直接两个循环直接比较


class Solution:
    """
    @param numbers: An array of Integer
    @param target: target = numbers[index1] + numbers[index2]
    @return: [index1, index2] (index1 < index2)
    """
    '''
    #hash 
    def twoSum(self, numbers, target):
        # write your code here
        hash = {}
        for i, num in enumerate(numbers):
            if target - num in hash:
                return [hash[target-num], i]
            hash[num] = i
        return [-1, -1]
    '''
    '''
    def twoSum(self, numbers, target):
        # write your code here
        for i in range(len(numbers)):
            for j in range(i):
                if numbers[i] + numbers[j] == target:
                    return [j, i]
                
    '''
    def twoSum(self, numbers, target):
    # write your code here
        for i in range(len(numbers)):
            for j in range(len(numbers)-1, i, -1):
                if numbers[i] + numbers[j] == target:
                    return [i, j]
        

猜你喜欢

转载自blog.csdn.net/qq_36387683/article/details/81218494
今日推荐