LeetCode Algorithm 1472. 设计浏览器历史记录
Posted Alex_996
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 1472. 设计浏览器历史记录相关的知识,希望对你有一定的参考价值。
题目链接:1472. 设计浏览器历史记录
Ideas
算法:双栈
数据结构:栈
思路:这明明是一道栈的题目,不知道为啥LeetCode给标成了链表的题目。
可以利用两个栈来实现,一个栈backend
用来存储访问历史,另外一个也用来存储访问历史,
咳咳,开个玩笑,另外一个栈frontend
用来存储前进历史。
什么是前进历史呢,就是当我们执行一次back
操作时,将backend
栈的栈顶元素弹出,然后塞入frontend
栈,这样再执行forward
操作时才能找到之前弹出的历史。
visit
:将当前页面链接塞入backend
栈,然后跳转到新的链接,注意跳转后要将frontend
栈内元素清空;back
:弹出steps
次backend
栈顶元素,如果栈为空则停止,弹出的元素主义塞入frontend
栈;forward
:弹出steps
次frontend
栈顶元素,如果栈为空则停止,弹出的元素主义塞入backend
栈;
Code
C++
class BrowserHistory
private:
stack<string> backend;
stack<string> frontend;
string curUrl;
public:
BrowserHistory(string homepage)
this->curUrl = homepage;
void visit(string url)
this->backend.push(this->curUrl);
this->curUrl = url;
while (!this->frontend.empty()) this->frontend.pop();
string back(int steps)
while (steps-- && !this->backend.empty())
this->frontend.push(this->curUrl);
this->curUrl = this->backend.top();
this->backend.pop();
return this->curUrl;
string forward(int steps)
while (steps-- && !this->frontend.empty())
this->backend.push(this->curUrl);
this->curUrl = this->frontend.top();
this->frontend.pop();
return this->curUrl;
;
以上是关于LeetCode Algorithm 1472. 设计浏览器历史记录的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Algorithm 1472. 设计浏览器历史记录