599. 两个列表的最小索引总和https://leetcode.cn/problems/minimum-index-sum-of-two-lists/
难度简单224
假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。
你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。
示例 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
中的所有字符串都是 唯一 的。
通过次数79,011提交次数138,643
class Solution {
public String[] findRestaurant(String[] list1, String[] list2) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
HashMap<String,Integer> max = new HashMap<String,Integer>();
List<String> ans1= new ArrayList<String>();
int min = Integer.MAX_VALUE;
for(int i=0;i<list1.length;i++) map.put(list1[i],i);
for(int j=0;j<list2.length;j++)
{
if(map.containsKey(list2[j])==true)
{
max.put(list2[j],(map.get(list2[j])+j));
min = Math.min(map.get(list2[j])+j,min);
}
}
//遍历
for (String i : max.keySet()) if(max.get(i)==min) ans1.add(i);
String[] ans = new String[ans1.size()];
for (int i = 0; i < ans1.size(); ++i) {
ans[i] = ans1.get(i);
}
return ans;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/68951.html