【力扣日記】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好像不行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章