记录一下遇到的小问题的解决
对于for循环遍历,依次按顺序遍历对象的时候采用的并不是引用,因此我们在遍历时候需要加入引用来解决
332. 重新安排行程
class Solution {
public:
unordered_map<string, map<string, int>> targets;
bool backtracing(int ticketsNum, vector<string>& result) {
//结束条件
if (result.size() == ticketsNum + 1) {
return true;
}
//单层逻辑
for (auto city : targets[result.back()]) { //单层树
//单个节点
if (city.second > 0) {
result.push_back(city.first);
city.second--;
if (backtracing(ticketsNum,result)) return true;
city.second++;
result.pop_back();
}
}
return false;
}
vector<string> findItinerary(vector<vector<string>>& tickets) {
vector<string> result;
for (vector<string> vec : tickets) {
targets[vec[0]][vec[1]]++;
}
result.push_back("JFK");
backtracing(tickets.size(), result);
return result;
}
};
class Solution {
public:
unordered_map<string, map<string, int>> targets;
bool backtracing(int ticketsNum, vector<string>& result) {
//结束条件
if (result.size() == ticketsNum + 1) {
return true;
}
//单层逻辑
for (auto& city : targets[result.back()]) { //单层树
//单个节点
if (city.second > 0) {
result.push_back(city.first);
city.second--;
if (backtracing(ticketsNum,result)) return true;
city.second++;
result.pop_back();
}
}
return false;
}
vector<string> findItinerary(vector<vector<string>>& tickets) {
vector<string> result;
for (vector<string> vec : tickets) {
targets[vec[0]][vec[1]]++;
}
result.push_back("JFK");
backtracing(tickets.size(), result);
return result;
}
};