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

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
}
posted @   吴丹阳-V  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示