【Leetcode】P1 两数之和.py(未完待续)

题目描述

已知:

  • 整数数组: n u m s nums nums
  • 整数目标值: t a r g e t target target

要求:

  • 要求在 n u m s nums nums 数组中找到的值为 t a r g e t target target 的两个整数

返回:

  • 返回两个整数的数组下标

补充:

  • 每个 t a r g e t target target 只会对应一个答案
  • 数组中同一个元素在答案里不能重复出现
  • 你可以按任意顺序返回答案

示例:

  • 输入:nums = [2,7,11,15], target = 9
  • 输出:[0,1]

题目解决

python:

解法一:暴力枚举

理念:

双层循环,直接将数组中每两个元素相加看看有无匹配;时间复杂度最坏情况是数组中最后两个匹配成功。

代码:

def twoSum(nums: List[int], target: int) -> List[int]:
    n = len(nums)
    for i in range(n):
        for j in range(i+1,n):
            if nums[i]+nums[j]==target:
                return [i,j]

解法二:哈希表(未完待续)

理念:

创建一个哈希表 h a s h t a b l e hashtable hashtable,对于每一个 x x x,我们首先查询哈希表中是否存在 t a r g e t − x target - x targetx,然后将 x x x 插入到哈希表中,即可保证不会让 x x x 和自己匹配。

代码:

def twoSum(nums: List[int], target: int) -> List[int]:
	hashtable=dict()
	for i, num in enumerate(nums):
		if target-num in hashtable:
			return [hashtable[target-num],i]
		hashtable[nums[i]]=i

你可能感兴趣的:(#,Leetcode,leetcode,算法)