给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
题目数据保证线路图会形成一条不存在循环的线路,因此只会有一个旅行终点站。
实例1
输入:paths = [["London","New York"],["New York","Lima"],["Lima","Sao Paulo"]]
输出:"Sao Paulo"
解释:从 "London" 出发,最后抵达终点站 "Sao Paulo" 。本次旅行的路线是 "London" -> "New York" -> "Lima" -> "Sao Paulo" 。
实例2
输入:paths = [["B","C"],["D","B"],["C","A"]]
输出:"A"
解释:所有可能的线路是:
"D" -> "B" -> "C" -> "A".
"B" -> "C" -> "A".
"C" -> "A".
"A".
显然,旅行终点站是 "A" 。
实例3
输入:paths = [["A","Z"]]
输出:"Z"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/destination-city
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
1.首先,终点城市在 paths 里面只会出现一次
2.根据 1 的过滤(paths扁平化后过滤),最后会得到两个城市,始点城市和终点城市。
3.根据 2 的过滤,得到的两个城市,最后如果在 paths 里面的 index 是偶数的就是始点城市,如果是奇数终点城市。
代码如下
var destCity = function(paths) {
let _paths=paths.flat(2)
let _pathKey=[...new Set(_paths)]
return _pathKey.filter((item,index)=>JSON.stringify(paths).split(item).length===2&&index%2===1)[0]
};
// 一行代码实现
var destCity = function(paths) {
return [...new Set(paths)].flat(2).filter((item,index)=>JSON.stringify(paths).split(item).length===2&&index%2===1)[0]
};
方式二
var destCity = function(paths) {
let _paths=paths.flat(2)
let resultCount={}
let resultIndex={}
for(let i=0;i<_paths.length;i++){
resultCount[_paths[i]]=resultCount[_paths[i]]?++resultCount[_paths[i]]:1
resultIndex[_paths[i]]=resultIndex[_paths[i]]?resultIndex[_paths[i]]+''+i:i
}
for(let item of _paths){
if(resultCount[item]===1&&resultIndex[item]%2){
return item
}
}
};
方式三
var destCity = function(paths) {
let _pathFirst=[]
let _pathEnd=[]
paths.forEach(item=>{
_pathFirst.push(item[0])
_pathEnd.push(item[1])
})
for(let item of _pathEnd){
if(!_pathFirst.includes(item)){
return item
}
}
};
给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
题目数据保证线路图会形成一条不存在循环的线路,因此只会有一个旅行终点站。
实例1
实例2
实例3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/destination-city
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
1.首先,终点城市在 paths 里面只会出现一次
2.根据 1 的过滤(paths扁平化后过滤),最后会得到两个城市,始点城市和终点城市。
3.根据 2 的过滤,得到的两个城市,最后如果在 paths 里面的 index 是偶数的就是始点城市,如果是奇数终点城市。
代码如下
方式二
方式三