题解 | #两数之和#
两数之和
https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @param target int整型
# @return int整型一维数组
#
class Solution:
def twoSum(self , numbers: List[int], target: int) -> List[int]:
# write code here
result = []
hash = {}
for i in range(len(numbers)):
temp = target - numbers[i]
if temp not in hash.keys():
hash[numbers[i]] = i
else:
result.append(hash[temp]+1)
result.append(i+1)
break
return result
原本最暴力的方法是两重循环,复杂度是O(N2),使用哈希优化
知识点:哈希表
哈希表是一种根据关键码(key)直接访问值(value)的一种数据结构。而这种直接访问意味着只要知道key就能在O(1)时间内得到value,因此哈希表常用来统计频率、快速检验某个元素是否出现过等。
对于数组中出现的一个数a,如果目标值减去a的值已经出现过了,那这不就是我们要找的一对元组吗?这种时候,快速找到已经出现过的某个值,可以考虑使用哈希表快速检验某个元素是否出现过这一功能。
实习算法题题解 文章被收录于专栏
实习算法题
三奇智元机器人科技有限公司公司福利 82人发布
