zoukankan      html  css  js  c++  java
  • [leetcode-599-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:
    The length of both lists will be in the range of [1, 1000].
    The length of strings in both lists will be in the range of [1, 30].
    The index is starting from 0 to the list length minus 1.
    No duplicates in both lists.

    思路:

    主要是用map记录字符串出现次数,以及记录字符串对应的下标。

    感觉写的太啰嗦,待优化。

    vector<string> findRestaurant(vector<string>& list1, vector<string>& list2)
    {
      vector<string>res;
      map<string,int>restaurant;//记录是否 饭店出现次数。如果>1 
      map<string,int>index1;//记录饭店1索引
      map<string,int>index2;//记录饭店2索引
      map<string,int>::iterator it;
      for(int i=0;i<list1.size();i++)
      {
        index1[list1[i]] = i;
        restaurant[list1[i]]++;
      }
      for(int i=0;i<list2.size();i++)
      {
        index2[list2[i]] = i;
        restaurant[list2[i]]++;
      }
      int indexsum = 2000;  
      for(it =restaurant.begin();it!=restaurant.end();it++)
      {     
         if(it->second ==2) 
         {          
           if(index1[it->first] + index2[it->first] <indexsum)
           {
         indexsum =index1 [it->first] + index2[it->first];
         res.clear();
         res.push_back(it->first);
          }
          else if(index1[it->first] + index2[it->first] == indexsum)
          {
         indexsum =index1 [it->first] + index2[it->first];     
         res.push_back(it->first);
          }       
        }     
      }    
      return res;
    }
  • 相关阅读:
    C++ 实现B+树
    SSM项目--
    spring+mybatis使用MapperScannerConfigurer简化配置
    SpringMVC复习总结
    MyBatis复习总结
    ajax
    几种常用页面的跳转
    MyShop-不用框架的基础javaweb项目
    jsp
    Guava 工具类之joiner的使用
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/6915305.html
Copyright © 2011-2022 走看看