599. 两个列表的最小索引总和

exiaohu 于 2022-03-14 发布

题目链接: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]