川山甲

追求内心的非常平静!瞬间清空所有的杂念,达到物我两忘!

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理
 
题目中文
  
  给定一个整数数组 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可以使时间复杂度降低到常数阶,所以在查询时更快!

 

 
推荐
posted on 2019-10-17 14:18  川山甲  阅读(224)  评论(0编辑  收藏  举报