【力扣日记】599 两个列表的最小索引总和

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

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

class Solution(object):
    def findRestaurant(self, list1, list2):
        """
        :type list1: List[str]
        :type list2: List[str]
        :rtype: List[str]
        """

算法思路

        d={}
        for i in list(set(list1)&set(list2)):
            key=list1.index(i)+list2.index(i)
            d[key]=d.get(key,[])+[i]
        return d[min(d.keys())]

第二版:

class Solution:
    def findRestaurant(self, list1: List[str], list2: List[str]) -> List[str]:
        d={}
        d1={j:i for i,j in enumerate(list1)}
        d2={j:i for i,j in enumerate(list2)}
        for i in list(d1.keys()&d2.keys()):
            key = d1[i] + d2[i]
            d[key] = d.get(key, []) + [i]
        return d[min(d.keys())]

list(d1.keys()&d2.keys())在python3里是合法的,但是python2好像不行。

发布了210 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Heart_for_Ling/article/details/104860471