zoukankan      html  css  js  c++  java
  • [LeetCode] Minimum Index Sum of Two Lists

    Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite restaurants represented by strings.

    You need to help them find out their common interest with the least list index sum. If there is a choice tie between answers, output all of them with no order requirement. You could assume there always exists an answer.

    Example 1:

    Input:
    ["Shogun", "Tapioca Express", "Burger King", "KFC"]
    ["Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"]
    Output: ["Shogun"]
    Explanation: The only restaurant they both like is "Shogun".

    Example 2:

    Input:
    ["Shogun", "Tapioca Express", "Burger King", "KFC"]
    ["KFC", "Shogun", "Burger King"]
    Output: ["Shogun"]
    Explanation: The restaurant they both like and have the least index sum is "Shogun" with index sum 1 (0+1).

    Note:

    1. The length of both lists will be in the range of [1, 1000].
    2. The length of strings in both lists will be in the range of [1, 30].
    3. The index is starting from 0 to the list length minus 1.
    4. No duplicates in both lists.

    题目要求两个字符串数组中是否含相同的字符串,如果有多个相同的,则需要把索引和最小的字符串放入结果字符串数组中。首先使用map存储list1中字符串及其对应的索引,构成查找表。然后在list2中寻找map中的元素。把索引和小的放去结果字符串数组中,如果出现索引和相同的字符串则继续添加到结果字符串数组中,如果出现索引和更小的字符串,则将结果字符串数组清空后加入该字符串。

    class Solution {
    public:
        vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
            vector<string> res;
            unordered_map<string, int> m;
            int sum = 0, tmp = INT_MAX;
            for (int i = 0; i != list1.size(); i++)
                m[list1[i]] = i;
            for (int j = 0; j != list2.size(); j++) {
                if (m.count(list2[j])) {
                    sum = m[list2[j]] + j;
                    if (sum == tmp)
                        res.push_back(list2[j]);
                    else if (sum < tmp) {
                        tmp = sum;
                        res.clear();
                        res.push_back(list2[j]);
                    }
                }
            }
            return res;
            
        }
    };
    // 89 ms
  • 相关阅读:
    Eclipse遇到Initializing Java Tooling终极解决办法
    Quartz定时任务框架理解
    Quartz定时任务调度
    jQueryEasyUI Messager基本使用
    转一篇关于Log4j的介绍文章,很详细
    android联系人
    手机中预置联系人(姓名,号码,头像)
    android获取硬件信息
    Sumatra pdf更改起始页面的黄色颜色
    Eclipse背景颜色设置(设置成豆沙绿色保护眼睛,码农保护色)
  • 原文地址:https://www.cnblogs.com/immjc/p/7161598.html
Copyright © 2011-2022 走看看