class Solution {
public:
vector<string> res;
unordered_map<string, map<string, int>> trip;
bool backtrack(int tripNum)
{
if (res.size() == tripNum + 1)
return true;
for (pair<const string, int>& curTrip : trip[res[res.size() - 1]])
{
if (curTrip.second > 0)
{
res.push_back(curTrip.first);
curTrip.second--;
if (backtrack(tripNum))
return true;
res.pop_back();
curTrip.second++;
}
}
return false;
}
vector<string> findItinerary(vector<vector<string>>& tickets)
{
for (vector<string>& vec : tickets)
{
trip[vec[0]][vec[1]]++;
}
res.push_back("JFK");
backtrack(tickets.size());
return res;
}
};
LeetCode332. 重新安排行程
最新推荐文章于 2024-10-16 19:08:56 发布