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

63 阅读1分钟

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

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

func findRestaurant(list1 []string, list2 []string) []string {
	ans := make([]string, 0)
	list1Map := make(map[string]int)
	for i := range list1 {
		list1Map[list1[i]] = i 
	}
	minIndexSum := math.MaxInt64
	for j := range list2 {
		if list1Index, ok := list1Map[list2[j]]; ok {
			if list1Index + j < minIndexSum {
				minIndexSum = list1Index + j
				ans = []string{list2[j]}
			} else if list1Index + j == minIndexSum {
				ans = append(ans, list2[j])
			} 
		}
	}
	return ans
}