【leetcode】两数之和

 
题目中文
  
  给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标。
  你能够假设每种输入只会对应一个答案。可是,你不能重复利用这个数组中一样的元素。
 
  示例:
 
给定 nums = [2, 7, 11, 15], target = 9
由于 nums[0] + nums[1] = 2 + 7 = 9,因此返回 [0, 1]

   

算法实现
 
 
第一种:暴力匹配算法
 

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        if len(nums) < 2:
            return []

        iLen = len(nums)
        for i in range(iLen):
            for j in range(i + 1, iLen):
                if nums[i] + nums[j] == target:
                    return [i, j]
        return []

 


 
第二种:经过hash的方式
 

 

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        if len(nums) < 2:
            return []

        iLen = len(nums)
        hashDict = {}
        for i in range(iLen):
            find = target - nums[i]
            if find in hashDict:
                return [hashDict[find], i]
            else:
                hashDict[nums[i]] = i
        return []

 

 

 

因为hash能够使时间复杂度下降到常数阶,因此在查询时更快!算法

 

 
推荐
相关文章
相关标签/搜索