Go语言题解LeetCode599两个列表的最小索引总和

 更新时间:2022年12月28日 16:31:46   作者:刘09k11  
这篇文章主要为大家介绍了Go语言题解LeetCode599两个列表的最小索引总和示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目描述

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

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

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

示例 1:

输入: list1 = ["Shogun", "Tapioca Express", "Burger King", "KFC"],list2 = ["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"]
输出: ["Shogun"]
解释: 他们唯一共同喜爱的餐厅是“Shogun”。

示例 2:

输入:list1 = ["Shogun", "Tapioca Express", "Burger King", "KFC"],list2 = ["KFC", "Shogun", "Burger King"]
输出: ["Shogun"]
解释: 他们共同喜爱且具有最小索引和的餐厅是“Shogun”,它有最小的索引和1(0+1)。

提示:

  • 1 <= list1.length, list2.length <= 1000
  • 1 <= list1[i].length, list2[i].length <= 30 
  • list1[i] 和 list2[i] 由空格 ' ' 和英文字母组成。
  • list1 的所有字符串都是 唯一 的。
  • list2 中的所有字符串都是 唯一 的。

思路分析

其实题目意思不是找有不有共同的,而是找共同喜欢且索引和最小的,换种理解方式,2个朋友想找个都喜欢的餐馆聚餐,2个人喜欢的餐馆按照距离2个人距离排序,想找一个离2个人都近的餐馆,这样理解就好理解了

所以思路是:

现存一个人的餐馆表,key是餐馆,value是距离

去匹配第二个人的餐馆表,找到了看是不是最小距离,是的话就清空之前的添加进去,相等则添加到列表

AC 代码

class Solution {
    public String[] findRestaurant(String[] list1, String[] list2) {
            if(list1 == null||list2 == null){
                return null;
            }
            HashMap<String,Integer> bucket = new HashMap<>();
            for(int i = 0;i < list1.length;i++){
                bucket.put(list1[i],i);
            }
            List<String> res = new ArrayList<>();
            int minIndexSum = Integer.MAX_VALUE;
            for(int i = 0;i< list2.length;i++){
                if(bucket.containsKey(list2[i])){
                    if(bucket.get(list2[i])+i<minIndexSum){
                        minIndexSum = bucket.get(list2[i])+i;
                        res.clear();
                        res.add(list2[i]);
                    }else if(bucket.get(list2[i])+i == minIndexSum){
                        res.add(list2[i]);
                    }
                }
            }
            return res.toArray(new String[res.size()]);
    }
}

参考

4行代码,思路简单,性能高效 - 两个列表的最小索引总和 - 力扣(LeetCode) (leetcode-cn.com)

以上就是Go语言题解LeetCode599两个列表的最小索引总和的详细内容,更多关于Go题解两个列表最小索引总和的资料请关注脚本之家其它相关文章!

相关文章

  • 一文弄懂用Go实现MCP服务的示例代码

    一文弄懂用Go实现MCP服务的示例代码

    本文主要介绍了一文弄懂用Go实现MCP服务的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • 细细探究Go 泛型generic设计

    细细探究Go 泛型generic设计

    这篇文章主要带大家细细探究了Go 泛型generic设计及示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 从入门到精通:Go语言XML数据解析指南

    从入门到精通:Go语言XML数据解析指南

    Go语言的XML包提供了强大的数据解析功能,让你轻松处理各种XML格式的数据,这个指南将带你深入了解如何使用Go语言的XML包,快速上手XML数据解析,准备好开启XML解析之旅了吗?Let's Go!
    2024-03-03
  • goland设置颜色和字体的操作

    goland设置颜色和字体的操作

    这篇文章主要介绍了goland设置颜色和字体的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Golang中interface转string输出打印方法

    Golang中interface转string输出打印方法

    这篇文章主要给大家介绍了关于Golang中interface转string输出打印的相关资料,在go语言中interface转string可以直接使用fmt提供的fmt函数,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Go语言基础知识总结(语法、变量、数值类型、表达式、控制结构等)

    Go语言基础知识总结(语法、变量、数值类型、表达式、控制结构等)

    这篇文章主要介绍了Go语言基础知识总结(语法、变量、数值类型、表达式、控制结构等),本文汇总了Go语言的入门知识,需要的朋友可以参考下
    2014-10-10
  • Go语言封装一个Cron定时任务管理器

    Go语言封装一个Cron定时任务管理器

    在现代应用中,定时任务是非常常见的需求,无论是用于定时清理数据,还是定时执行系统维护任务,下面我们就来使用Go语言封装一个Cron定时任务管理器吧
    2024-12-12
  • VSCode安装go相关插件失败的简单解决方案

    VSCode安装go相关插件失败的简单解决方案

    这篇文章主要给大家介绍了关于VSCode安装go相关插件失败的简单解决方案,VSCode是我们开发go程序的常用工具,最近安装的时候遇到了些问题,需要的朋友可以参考下
    2023-07-07
  • 详解Golang中SQLX库的高级操作

    详解Golang中SQLX库的高级操作

    sqlx是Golang中的一个知名三方库,其为Go标准库database/sql提供了一组扩展支持,下面就来和大家分享一下SQLX库的高级操作吧,希望对大家有所帮助
    2023-06-06
  • golang 两个go程轮流打印一个切片的实现

    golang 两个go程轮流打印一个切片的实现

    这篇文章主要介绍了golang 两个go程轮流打印一个切片的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论