Minimum Index Sum of Two Lists - Hash Table - Easy - LeetCode
💻 coding

Minimum Index Sum of Two Lists - Hash Table - Easy - LeetCode

1 min read 243 words
1 min read
ShareWhatsAppPost on X
  • 1The problem involves finding common restaurants from two lists with the least index sum.
  • 2If multiple restaurants have the same minimum index sum, all should be returned.
  • 3The solution uses hash tables for efficient lookup and has a time complexity of O(n).

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The problem involves finding common restaurants from two lists with the least index sum."

Minimum Index Sum of Two Lists - Hash Table - Easy - LeetCode

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.

public class Solution {
 public string[] FindRestaurant(string[] list1, string[] list2) {
 var map1 = new Dictionary<string,int>();
 var map2 = new Dictionary<string,int>();
 for(int i=0;i<list1.Length;i++){
 map1.Add(list1[i],i);
 }
 
 for(int i=0;i<list2.Length;i++){
 map2.Add(list2[i],i);
 }
 
 int min = int.MaxValue;
 var result = new List<string>();
 foreach(var item in map1){
 if(map2.ContainsKey(item.Key)){
 var sum = item.Value+map2[item.Key];
 if(sum<min){
 min = sum;
 result.Clear();
 result.Add(item.Key);
 } 
 else if(sum==min){
 result.Add(item.Key);
 }
 }
 }
 
 return result.ToArray();
 }
}

Time Complexity: O(n)

Space Complexity: O(n)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 29 September 2020 · 1 min read · 243 words

Part of AskGif Blog · coding

You might also like

Minimum Index Sum of Two Lists - Hash Table - Easy - LeetCode | AskGif Blog