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:
public class Solution {public string[] FindRestaurant(string[] list1, string[] list2) {List<Pair> listPair1 = new List<Pair>();for(int i = 0;i<list1.Length;i++){Pair pair =new Pair(list1[i], i);listPair1.Add(pair);}List<string> lowestMatchList = new List<string>();int lowestMatchIndex = Int32.MaxValue;for(int i = 0;i<list2.Length;i++){foreach(Pair pair in listPair1){string restaurant = list2[i];if(restaurant== pair.Restaurant){int sum = i + pair.Index;if(sum == lowestMatchIndex){lowestMatchList.Add(restaurant);}else if(sum < lowestMatchIndex){lowestMatchIndex = sum;if(lowestMatchList.Count > 0){lowestMatchList.Remove(lowestMatchList[0]);}lowestMatchList.Add(restaurant);}}}}return lowestMatchList.ToArray();}public class Pair{public string Restaurant {get;set;}public int Index {get;set;}public Pair(string restaurant, int index){Restaurant = restaurant;Index = index;}}}
599. 列表下标最小和 Minimum Index Sum of Two Lists
原文:http://www.cnblogs.com/xiejunzhao/p/21d395e2c757894c29afb416f4b4f9b1.html