返回
三道考察散列表的数据结构和算法的面试题
见解分享
2023-09-29 20:57:15
三道散列表面试题
散列表是一种广泛应用于计算机科学中的数据结构,它通过利用哈希函数将键映射到值来实现快速查找。在面试中,散列表是常见的考察点,以下列举了三道经典的散列表面试题:
- 两数之和
给定一个整数数组 nums
和一个目标值 target
,找出数组中两个数的索引,使得它们的和等于 target
。
def two_sum(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
hashtable = {}
for i, num in enumerate(nums):
complement = target - num
if complement in hashtable:
return [hashtable[complement], i]
hashtable[num] = i
return []
- 最长连续子数组和
给定一个整数数组 nums
,找出数组中最长的连续子数组的和。
def max_sub_array_sum(nums):
"""
:type nums: List[int]
:rtype: int
"""
max_sum = float('-inf')
current_sum = 0
hashtable = {0: -1} # 记录前缀和到索引的映射
for i, num in enumerate(nums):
current_sum += num
if current_sum - max_sum in hashtable:
max_sum = current_sum - hashtable[current_sum - max_sum]
else:
hashtable[current_sum] = i
return max_sum
- 无重复字符的最长子串
给定一个字符串 s
,找出不包含重复字符的最长子串的长度。
def length_of_longest_substring(s):
"""
:type s: str
:rtype: int
"""
hashtable = {} # 记录字符到索引的映射
max_length = 0
start = 0
for i, char in enumerate(s):
if char in hashtable and hashtable[char] >= start:
start = hashtable[char] + 1
hashtable[char] = i
max_length = max(max_length, i - start + 1)
return max_length
总结
以上三道面试题都与散列表的数据结构和常用算法紧密相关。通过理解这些算法的原理和实现方式,您可以加深对散列表的理解,并为应对面试中的散列表问题做好充分的准备。希望本文能够对您有所帮助,祝您在面试中取得佳绩!