zoukankan      html  css  js  c++  java
  • 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).


    输出两个字符串数组共有的字符串,要求索引之和最小

    C++(92ms):
     1 class Solution {
     2 public:
     3     vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
     4         vector<string> res ;
     5         unordered_map<string,int> Map ;
     6         int Min = INT_MAX ;
     7         for(int i = 0 ; i < list1.size() ; i++){
     8             Map[list1[i]] = i ;
     9         }
    10         for(int i = 0 ; i < list2.size() ; i++){
    11             if (Map.count(list2[i])){
    12                 if (Map[list2[i]] + i < Min ){
    13                     Min = Map[list2[i]] + i ;
    14                     res.clear();
    15                     res.push_back(list2[i]) ;
    16                 }else if(Map[list2[i]] + i == Min ){
    17                     res.push_back(list2[i]) ;
    18                 }
    19             }
    20         }
    21         return res ;
    22     }
    23 };

    Java(29ms):

     1 class Solution {
     2     public String[] findRestaurant(String[] list1, String[] list2) {
     3         HashMap<String,Integer> Map = new HashMap() ;
     4         LinkedList<String> res = new LinkedList() ;
     5         int Min = Integer.MAX_VALUE ;
     6         for(int i = 0 ; i < list1.length ; i++){
     7             Map.put(list1[i] , i) ;
     8         }
     9         for(int i = 0 ; i < list2.length ; i++){
    10             if (Map.containsKey(list2[i])){
    11                if (Map.get(list2[i]) + i < Min){
    12                    Min = Map.get(list2[i]) + i ;
    13                    res.clear() ;
    14                    res.add(list2[i]) ;
    15                }else if (Map.get(list2[i]) + i == Min){
    16                    res.add(list2[i]) ;
    17                }
    18             }
    19         }
    20         return res.toArray(new String[res.size()]) ;
    21     }
    22 }
  • 相关阅读:
    Angularjs-Forms(表单)
    Angularjs-filter(过滤器)
    Angularjs –– Expressions(表达式)
    Angular
    AngularJS
    AngularJS–Scope(作用域)
    AngularJS–service(服务)
    AngularJS--控制器(Controller)
    AngularJS指南文档
    Web 开发模式演变历史和趋势
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/7783316.html
Copyright © 2011-2022 走看看