**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
我试图通过使用私有方法applyHierholzerAlgorithm来解决这个问题,但它总是发生在AddressSanitizer:堆栈溢出错误。
有人能给予一些提示,关于这个代码有什么问题吗?
class Solution {
public:
vector<string> findItinerary(vector<vector<string>>& tickets) {
//build the graph, and make it sorted
for (auto entry : tickets) {
std::string origin = entry[0];
std::string dest = entry[1];
if (flights.find(origin) != flights.end()) {
flights[origin].push_back(dest);
//sort here
std::sort(flights[origin].begin(), flights[origin].end());
} else {
std::vector<std::string> destList = std::vector<std::string>();
destList.push_back(dest);
flights[origin] = destList;
}
}
applyHierholzerAlgorithm("JFK");
return result;
}
private:
std::unordered_map<std::string, std::vector<std::string>> flights;
std::vector<std::string> result;
void applyHierholzerAlgorithm(std::string origin) {
if (flights.find(origin) != flights.end()) {
std::vector<std::string> dests = flights[origin];
while(!dests.empty()) {
std::string nextTo = dests[0];
dests.erase(dests.begin());
applyHierholzerAlgorithm(nextTo);
}
}
result.insert(result.begin(), origin);
}
};
1条答案
按热度按时间dxpyg8gm1#
最新消息。我找到问题的答案了。
问题是我参考了leetcode的答案,因为它是由Java回答的,所以局部变量中发生了一些差异。
这两行:
将导致
flights[origin]
无法有效擦除其元素,然后出现堆栈溢出。我可以在删除后再加一行:
或直接使用
flights[origin]
进行相关操作