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

LeetCode 599. 两个列表的最小索引总和缩略图

假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。

你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-index-sum-of-two-lists
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

LeetCode 599. 两个列表的最小索引总和插图
OpenCV步步精深-可心科创工作室

思路:先找共有的,再从共有的中找索引和最小的。

python3实现

class Solution:
    def findRestaurant(self, list1: List[str], list2: List[str]) -> List[str]:
        dic_list1 = collections.Counter(list1)
        dic_list2 = collections.Counter(list2)

        both_like = []
        # 注意比较长度
        if len(dic_list1) >= len(dic_list2):        
            longer = dic_list1
            shorter = dic_list2
        else:
            longer = dic_list2
            shorter = dic_list1
        for k in longer:
            if k in shorter:
                both_like.append(k)
        # print("both_like:", both_like)

        idx = []
        for elem_idx in range(len(both_like)):
            idx.append(list1.index(both_like[elem_idx]) + list2.index(both_like[elem_idx]))
        minest = min(idx)
        # print("idx:", idx)

        result = []
        for el_idx in range(len(idx)):
            if idx[el_idx] == minest:
                result.append(both_like[el_idx])
        
        return result
LeetCode 599. 两个列表的最小索引总和插图1
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深