题解 | #两数之和#
两数之和
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的值已经出现过了,那这不就是我们要找的一对元组吗?这种时候,快速找到已经出现过的某个值,可以考虑使用哈希表快速检验某个元素是否出现过这一功能。
实习算法题题解 文章被收录于专栏
实习算法题