599. 两个列表的最小索引总和 - 力扣(Leetcode)
刚开始的思路是搞两个map
,但是性能比较差,只需要构建一个map
然后遍历第二个list
即可
[!添加后可以过滤一些肯定不符合条件的]
if k1 > indexSum { continue }
func findRestaurant(list1 []string, list2 []string) []string {
if len(list1) == 0 || len(list2) == 0 {
return []string{}
}
map1 := make(map[string]int, len(list1))
// map2 := make(map[string]int, len(list2))
for k, v := range list1 {
map1[v] = k
}
indexSum := len(list1) + len(list2)
ret := []string{}
for k1, v1 := range list2 {
// 加上这个条件可以省略很多判断
if k1 > indexSum {
continue
}
if k2, ok := map1[v1]; ok {
if k1+k2 < indexSum {
ret = []string{v1}
indexSum = k1+k2
} else if k1 + k2 == indexSum {
ret = append(ret, v1)
}
}
}
// for k, v := range list2 {
// map2[v] = k
// }
// indexSum := len(list1) + len(list2)
// ret := []string{}
// for k1, v1 := range map1 {
// if v2, ok := map2[k1]; ok {
// if v1 + v2 < indexSum {
// ret = []string{k1}
// indexSum = v1+v2
// } else if v1+v2 == indexSum {
// ret = append(ret, k1)
// }
// }
// }
return ret
}
标签:string,v1,599,ret,leetcode,索引,k1,len,indexSum
From: https://www.cnblogs.com/wudanyang/p/17018297.html