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
  • 相关阅读:
    可能是最简单的解决本地开发接口请求跨域问题的方案
    《Visual Studio程序员箴言》笔记
    vue后台项目记录
    新版本微信导致的ios表单bug
    longzhuapp项目笔记
    Session、LocalStorage、SessionStorage、Cache-Ctrol比较
    css3实现不同进度条
    axios请求接口的踩坑之路
    实现不同尺寸的图片在固定的区块内实现水平垂直居中
    for循环查找元素怎么跳出for循环
  • 原文地址:https://www.cnblogs.com/immjc/p/7161598.html
Copyright © 2011-2022 走看看