Golang:
思路:用了两个map,时间复杂度还行,但空间复杂度可太高了,第一个map存放长度更长的列表,第二个map去存储索引最小的字符串集合。代码还是有些复杂的,而且空间复杂度太低了,不推荐。
代码如下:
func findRestaurant(list1 []string, list2 []string) []string {
if len(list1)==0||len(list2)==0{
return nil
}
minsum:=-1
dic:=make(map[string]int)
minress:=make(map[int][]string)
var longl,shortl []string
if len(list1)>len(list2) {
longl,shortl=list1,list2
}else {
longl,shortl=list2,list1
}
for k,v:=range longl{
dic[v]=k
}
for k,v:=range shortl{
if t,ok:=dic[v];ok {
if minsum==-1 {
minsum=k+t
minress[minsum]=append(minress[minsum],v)
}else{
if k+t<=minsum {
minsum=k+t
minress[minsum]=append(minress[minsum],v)
}
}
}
}
return minress[minsum]
}
有疑问加站长微信联系(非本文作者)