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