题目链接:599. 两个列表的最小索引总和
求交集,并找到索引和最小的元素。
from typing import List
class Solution:
def findRestaurant(self, list1: List[str], list2: List[str]) -> List[str]:
common = set(list1).intersection(list2)
lookup1, lookup2 = {item: i for i, item in enumerate(list1)}, {item: i for i, item in enumerate(list2)}
items, i = sorted(common, key=lambda v: lookup1[v] + lookup2[v]), 1
while i < len(items):
if lookup1[items[i - 1]] + lookup2[items[i - 1]] != lookup1[items[i]] + lookup2[items[i]]:
break
i += 1
return items[:i]