我正在 codewars.com 上练习编码。我遇到了 this question :
我们正在追查我们的流氓特工 Matthew Knight A.K.A。罗伊米勒和他从一个地方到另一个地方旅行以避免被追踪。他的每一次旅行都基于一个不寻常或不正确顺序的行程列表。任务是确定他在每一次旅程中将采取的路线。您将获得一系列他的行程路线。根据他的行程,仅列出他将按正确顺序去的地方。
示例:路线 =
[[USA, BRA], [JPN, PHL], [BRA, UAE], [UAE, JPN]]
结果:
"USA, BRA, UAE, JPN, PHL"
我已尝试使用以下代码:
function findRoutes(routes) {
let newArr = Array.prototype.concat.apply([], routes)
let unique = newArr.filter((v, i, a) => a.indexOf(v) === i);
return unique.join(', ');
}
console.log(findRoutes([["USA","BRA"],["JPN","PHL"],["BRA","UAE"],["UAE","JPN"]]))
它只适用于给定的情况,但是当我尝试另一个测试用例时:
[["Chicago", "Winnipeg"], ["Halifax", "Montreal"], ["Montreal", "Toronto"], ["Toronto", "Chicago"], ["Winnipeg", "Seattle"]]
如果失败了……因此我知道出了点问题,因为运动应该是有序的。我很乐意改进它或从不同的想法重写。
为了找到第一个城市,我发现开始和终点之间的区别
Java上的解决方案;