假設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好像不行。