设计浏览器历史记录(字节)
图解:
复杂度:
-
时间复杂度:visit: O(1),back: O(1),forward:O(1);
-
空间复杂度:O(n),n 为 stack 的长度;
代码实现:
class BrowserHistory {
stack: Array<string>;
cur: number;
constructor(homepage: string) {
this.stack = [homepage];
this.cur = 0;
}
visit(url: string): void {
this.stack.length = this.cur + 1;
this.stack.push(url);
this.cur++;
}
back(steps: number): string {
this.cur = Math.max(0, this.cur - steps);
return this.stack[this.cur];
}
forward(steps: number): string {
this.cur = Math.min(this.stack.length - 1, this.cur + steps);
return this.stack[this.cur];
}
}
var BrowserHistory = function (homepage) {
this.stack = [homepage]
this.cur = 0
};
BrowserHistory.prototype.visit = function (url) {
this.stack.length = this.cur + 1
this.stack.push(url)
this.cur++
};
BrowserHistory.prototype.back = function (steps) {
this.cur = Math.max(0, this.cur - steps)
return this.stack[this.cur]
};
BrowserHistory.prototype.forward = function (steps) {
this.cur = Math.min(this.stack.length - 1, this.cur + steps)
return this.stack[this.cur]
};
208.实现 Trie (前缀树)
上一篇