From a7fe7f843622360e16cb0f0bfbae93ac3033d9fb Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Fri, 9 Jul 2021 16:30:17 +0800 Subject: [PATCH] =?UTF-8?q?599:=E4=B8=A4=E4=B8=AA=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=E6=9C=80=E5=B0=8F=E7=B4=A2=E5=BC=95=E6=80=BB=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/cn/MinimumIndexSumOfTwoLists.java | 72 +++++++++++++++++++ .../editor/cn/MinimumIndexSumOfTwoLists.md | 31 ++++++++ 2 files changed, 103 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.java create mode 100644 src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.md diff --git a/src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.java b/src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.java new file mode 100644 index 0000000..4d4885c --- /dev/null +++ b/src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.java @@ -0,0 +1,72 @@ +//假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。 +// +// 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。 +// +// 示例 1: +// +// 输入: +//["Shogun", "Tapioca Express", "Burger King", "KFC"] +//["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"] +//输出: ["Shogun"] +//解释: 他们唯一共同喜爱的餐厅是“Shogun”。 +// +// +// 示例 2: +// +// 输入: +//["Shogun", "Tapioca Express", "Burger King", "KFC"] +//["KFC", "Shogun", "Burger King"] +//输出: ["Shogun"] +//解释: 他们共同喜爱且具有最小索引和的餐厅是“Shogun”,它有最小的索引和1(0+1)。 +// +// +// 提示: +// +// +// 两个列表的长度范围都在 [1, 1000]内。 +// 两个列表中的字符串的长度将在[1,30]的范围内。 +// 下标从0开始,到列表的长度减1。 +// 两个列表都没有重复的元素。 +// +// Related Topics 数组 哈希表 字符串 +// 👍 112 👎 0 + +package leetcode.editor.cn; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +//599:两个列表的最小索引总和 +public class MinimumIndexSumOfTwoLists{ + public static void main(String[] args) { + //测试代码 + Solution solution = new MinimumIndexSumOfTwoLists().new Solution(); + } + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) +class Solution { + public String[] findRestaurant(String[] list1, String[] list2) { + HashMap< Integer, List < String >> map = new HashMap < > (); + for (int i = 0; i < list1.length; i++) { + for (int j = 0; j < list2.length; j++) { + if (list1[i].equals(list2[j])) { + if (!map.containsKey(i + j)) { + map.put(i + j, new ArrayList < String > ()); + } + map.get(i + j).add(list1[i]); + } + } + } + int min_index_sum = Integer.MAX_VALUE; + for (int key: map.keySet()) { + min_index_sum = Math.min(min_index_sum, key); + } + String[] res = new String[map.get(min_index_sum).size()]; + return map.get(min_index_sum).toArray(res); + } +} +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.md b/src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.md new file mode 100644 index 0000000..6121286 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/MinimumIndexSumOfTwoLists.md @@ -0,0 +1,31 @@ +

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

+ +

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

+ +

示例 1:

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

示例 2:

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

提示:

+ +
    +
  1. 两个列表的长度范围都在 [1, 1000]内。
  2. +
  3. 两个列表中的字符串的长度将在[1,30]的范围内。
  4. +
  5. 下标从0开始,到列表的长度减1。
  6. +
  7. 两个列表都没有重复的元素。
  8. +
+
Related Topics
  • 数组
  • 哈希表
  • 字符串
  • \n
  • 👍 112
  • 👎 0
  • \ No newline at end of file