Back to all solutions
#599 - Minimum Index Sum of Two Lists
Problem Description
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.
Solution
/**
* @param {string[]} list1
* @param {string[]} list2
* @return {string[]}
*/
var findRestaurant = function(list1, list2) {
const map = new Map(list1.map((str, index) => [str, index]));
return list2
.map((str, index) => map.has(str) ? [map.get(str) + index, str] : null)
.filter(Boolean)
.sort(([a], [b]) => a - b)
.filter(([sum], index, [[lowest]]) => sum === lowest)
.map(([, str]) => str);
};