题目:1436. 旅行终点站
思路:哈希表来存储出现的情况,时间复杂度0(n)。
C++版本:
class Solution {
public:
string destCity(vector<vector<string>>& paths) {
//哈希表
unordered_map<string,bool> mp;
//遍历
for(auto x:paths){
//出发点
mp[x[0]]=false;
//抵达点,还没出现过
if(mp.count(x[1])==0){
mp[x[1]]=true;
}else{
//抵达点,出现过
mp[x[1]]=(mp[x[1]]&&true);
}
}
for(auto x:mp){
if(x.second==true) return x.first;
}
return "";
}
};
JAVA版本:
class Solution {
public String destCity(List<List<String>> paths) {
//哈希表
Map<String,Boolean> mp = new HashMap<String,Boolean>();
//遍历
for(var x:paths){
//出发点
mp.put(x.get(0),false);
//抵达点,还没出现过
if(!mp.containsKey(x.get(1))){
mp.put(x.get(1),true);
}else{
//抵达点,出现过
mp.put(x.get(1),(mp.get(x.get(1))&&true));
}
}
for(var x:mp.entrySet()){
if(x.getValue()==true) return x.getKey();
}
return "";
}
}