设计浏览器历史记录(字节)

图解:

复杂度:

  1. 时间复杂度:visit: O(1),back: O(1),forward:O(1);

  2. 空间复杂度:O(n),n 为 stack 的长度;

代码实现:

TS
JS
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]
};
打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 设计浏览器历史记录(字节)
  2. 2. 图解:
  3. 3. 复杂度:
  4. 4. 代码实现: