zoukankan      html  css  js  c++  java
  • 哈希表//两个列表的最小索引总和

    假设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. 两个列表中的字符串的长度将在[1,30]的范围内。
    3. 下标从0开始,到列表的长度减1。
    4. 两个列表都没有重复的元素。
    class Solution {
    public:
        vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
            vector<string> res;
            map<string,int> data;
            int minVal = INT_MAX;
            for(int i = 0; i < list1.size(); i++){
                data.insert(pair<string,int>(list1[i],i));
            }
            for(int i = 0; i < list2.size(); i++){
                if(data.find(list2[i]) != data.end()){
                    if(data[list2[i]] + i < minVal){
                        minVal = data[list2[i]] + i;
                        res.clear();
                        res.push_back(list2[i]);
                    }else if(data[list2[i]] + i == minVal){
                        res.push_back(list2[i]);
                    }
                }
            }
            return res;
        }
    };
  • 相关阅读:
    POJ 1703 Find them, Catch them
    POJ 2236 Wireless Network
    POJ 2010 Moo University
    POJ 2184 Cow Exhibition
    POJ 3280 Cheapest Palindrome
    POJ 3009 Curling 2.0
    POJ 3669 Meteor Shower
    POJ 2718 Smallest Difference
    POJ 3187 Backward Digit Sums
    POJ 3050 Hopscotch
  • 原文地址:https://www.cnblogs.com/strawqqhat/p/10602283.html
Copyright © 2011-2022 走看看