码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • LeetCode Algorithm 1472. 设计浏览器历史记录


    题目链接:1472. 设计浏览器历史记录

    Ideas

    算法:双栈
    数据结构:栈
    思路:这明明是一道栈的题目,不知道为啥LeetCode给标成了链表的题目。
    可以利用两个栈来实现,一个栈backend用来存储访问历史,另外一个也用来存储访问历史,
    咳咳,开个玩笑,另外一个栈frontend用来存储前进历史。
    什么是前进历史呢,就是当我们执行一次back操作时,将backend栈的栈顶元素弹出,然后塞入frontend栈,这样再执行forward操作时才能找到之前弹出的历史。

    1. visit:将当前页面链接塞入backend栈,然后跳转到新的链接,注意跳转后要将frontend栈内元素清空;
    2. back:弹出steps次backend栈顶元素,如果栈为空则停止,弹出的元素主义塞入frontend栈;
    3. 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;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
  • 相关阅读:
    Kotlin 使用vararg可变参数
    上周热点回顾(5.27-6.2)
    Python经典练习题,闯关练习题
    msvcp120.dll丢失怎么办?(五种方法快速解决)
    upp(统一流程平台)项目范围说明书
    Spring5学习笔记02--BeanFactory 与 ApplicationContext 容器实现
    中国这么多 Java 开发者,应该诞生出生态级应用开发框架
    PLC面向对象编程系列之如何设计分解状态机(FSM)的状态
    抽象类与接口
    计算机网络 ——HTTP协议(一)
  • 原文地址:https://blog.csdn.net/weixin_43336281/article/details/126254046
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号