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:

      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.

    没有看懂其意思,但是通过测试用例大概明白了它想干嘛!

    class Solution(object):
        def findRestaurant(self, list1, list2):
            """
            :type list1: List[str]
            :type list2: List[str]
            :rtype: List[str]
            """        
            d1 = {s:i for i,s in enumerate(list1)} 
            d2 = {s:i for i,s in enumerate(list2)}
            
            ans = []
            min_sum = float('inf')
            for s in d1:
                if s in d2:
                    sum2 = d1[s]+d2[s]
                    if sum2 < min_sum:
                        min_sum = sum2
                        ans = [s]
                    elif sum2 == min_sum:
                        ans.append(s)
            return ans        

    还可以节省一个dict。

    class Solution(object):
        def findRestaurant(self, list1, list2):
            """
            :type list1: List[str]
            :type list2: List[str]
            :rtype: List[str]
            """        
            d1 = {s:i for i,s in enumerate(list1)}         
            ans = []
            min_sum = float('inf')
            for i,s in enumerate(list2):
                if s in d1:
                    sum2 = d1[s]+i
                    if sum2 < min_sum:
                        min_sum = sum2
                        ans = [s]
                    elif sum2 == min_sum:
                        ans.append(s)
            return ans        
  • 相关阅读:
    多尺度目标检测 Multiscale Object Detection
    转置卷积Transposed Convolution
    Fine-Tuning微调原理
    eclipse中alt+/失效的几种解决方法
    错误笔记 对象为null时调用改对象的方法会报错
    JAVA -数据类型与表达式---变量与赋值
    错误笔记 3 变量值未初始化
    JAVA BigDecimal 用法
    JDBC url连接字符串错误1
    JDBC连接最新版Mysql数据库url设置
  • 原文地址:https://www.cnblogs.com/bonelee/p/8688852.html
Copyright © 2011-2022 走看看