大家好!我最近参加了Spotify加拿大算法工程师的面试,其中一道题是LeetCode 599: 两个列表的最小索引总和。 我用Python轻松搞定了它,所以想分享一下我的解法和一些面试经验 ![]()
题目:LeetCode 599 两个列表的最小索引总和
给定两个字符串列表,找到两个列表中共同存在的字符串,并返回索引和最小的字符串列表。如果有多个字符串具有相同的最小索引和,则返回所有这些字符串,按字典顺序排序。
我的Python解法:
def findRestaurant(list1, list2):
dict1 = {rest: index for index, rest in enumerate(list1)}
res = []
min_sum = float('inf')
for index, rest in enumerate(list2):
if rest in dict1:
cur_sum = index + dict1
if cur_sum < min_sum:
res =
min_sum = cur_sum
elif cur_sum == min_sum:
res.append(rest)
res.sort()
return res
# Example
list1 =
list2 =
print(findRestaurant(list1, list2)) # Output:
list1 =
list2 =
print(findRestaurant(list1, list2)) # Output:
代码解释:
首先,我用字典 dict1 存储 list1 中每个字符串及其索引。然后,我遍历 list2,检查每个字符串是否在 dict1 中。如果存在,则计算索引和。如果索引和小于当前最小索引和,则更新结果列表和最小索引和。如果索引和等于当前最小索引和,则将字符串添加到结果列表中。最后,对结果列表进行排序并返回。 ![]()
面试经验分享:
- 提前准备很重要! LeetCode刷题是必须的,建议多刷一些高频题。

- 清晰的代码风格和注释 可以让面试官更容易理解你的思路。

- 不要害怕问问题! 如果题目不理解,一定要问清楚,避免走弯路。

- 保持冷静和自信! 面试紧张很正常,但要相信自己,你已经准备好了!

希望我的分享能帮助到大家!祝大家面试顺利!
如果大家有其他问题,欢迎在评论区留言! ![]()

