algorithm

599. Minimum Index Sum of Two Lists

식피두 2020. 8. 31. 00:58

https://leetcode.com/problems/minimum-index-sum-of-two-lists/

 

Minimum Index Sum of Two Lists - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

270ms

import collections

class Solution:
    def findRestaurant(self, list1: List[str], list2: List[str]) -> List[str]:
        a = set(list1)
        b = set(list2)
        
        common = a.intersection(b)
        
        candi = collections.defaultdict(list)
        
        for word in common:
            idx0 = list1.index(word)
            idx1 = list2.index(word)
            idx_sum = idx0+idx1
            
            candi[idx_sum].append(word)
        
        min_val = min(list(candi.keys()))
        
        return candi[min_val]

 

fix one position

 

136ms

class Solution:
    def findRestaurant(self, list1: List[str], list2: List[str]) -> List[str]:
        m, n = len(list1), len(list2)
        restaurant_mapper = {val: i for i, val in enumerate(list1)}
        best = m + n
        result = []
        for i, val in enumerate(list2):
            if val in restaurant_mapper:
                if restaurant_mapper[val] + i < best:
                    best = restaurant_mapper[val] + i
                    result = [val]
                elif restaurant_mapper[val] + i == best:
                    result.append(val)
        return result