当前位置: 首页 > wzjs >正文

网站建设文件百度投诉电话

网站建设文件,百度投诉电话,商务网站建设规划,建站公司刚起步怎么接单本题出自LeetCode1472.设计浏览器历史记录 题目 你有一个只支持单个标签页的 浏览器 ,最开始你浏览的网页是 homepage ,你可以访问其他的网站 url ,也可以在浏览历史中后退 steps 步或前进 steps 步。 请你实现 BrowserHistory 类&#xff1…

本题出自LeetCode1472.设计浏览器历史记录


题目 

你有一个只支持单个标签页的 浏览器 ,最开始你浏览的网页是 homepage ,你可以访问其他的网站 url ,也可以在浏览历史中后退 steps 步或前进 steps 步。

请你实现 BrowserHistory 类:

  • BrowserHistory(string homepage) ,用 homepage 初始化浏览器类
  • void visit(string url) 从当前页跳转访问 url 对应的页面  。执行此操作会把浏览历史前进的记录全部删除
  • string back(int steps) 在浏览历史中后退 steps 步。如果你只能在浏览历史中后退至多 x 步且 steps > x ,那么你只后退 x 步。请返回后退 至多 steps 步以后的 url 
  • string forward(int steps) 在浏览历史中前进 steps 步。如果你只能在浏览历史中前进至多 x 步且 steps > x ,那么你只前进 x 步。请返回前进 至多 steps步以后的 url 

示例 

输入:
["BrowserHistory","visit","visit","visit","back","back","forward","visit","forward","back","back"]
[["leetcode.com"],["google.com"],["facebook.com"],["youtube.com"],[1],[1],[1],["linkedin.com"],[2],[2],[7]]
输出:
[null,null,null,null,"facebook.com","google.com","facebook.com",null,"linkedin.com","google.com","leetcode.com"]解释:
BrowserHistory browserHistory = new BrowserHistory("leetcode.com");
browserHistory.visit("google.com");       // 你原本在浏览 "leetcode.com" 。访问 "google.com"
browserHistory.visit("facebook.com");     // 你原本在浏览 "google.com" 。访问 "facebook.com"
browserHistory.visit("youtube.com");      // 你原本在浏览 "facebook.com" 。访问 "youtube.com"
browserHistory.back(1);                   // 你原本在浏览 "youtube.com" ,后退到 "facebook.com" 并返回 "facebook.com"
browserHistory.back(1);                   // 你原本在浏览 "facebook.com" ,后退到 "google.com" 并返回 "google.com"
browserHistory.forward(1);                // 你原本在浏览 "google.com" ,前进到 "facebook.com" 并返回 "facebook.com"
browserHistory.visit("linkedin.com");     // 你原本在浏览 "facebook.com" 。 访问 "linkedin.com"
browserHistory.forward(2);                // 你原本在浏览 "linkedin.com" ,你无法前进任何步数。
browserHistory.back(2);                   // 你原本在浏览 "linkedin.com" ,后退两步依次先到 "facebook.com" ,然后到 "google.com" ,并返回 "google.com"
browserHistory.back(7);                   // 你原本在浏览 "google.com", 你只能后退一步到 "leetcode.com" ,并返回 "leetcode.com"

基础代码框架 

class BrowserHistory {public BrowserHistory(String homepage) {}public void visit(String url) {}public String back(int steps) {}public String forward(int steps) {}
}

 题解 一

class BrowserHistory {private List<String> timeslices = new ArrayList<>();private final String homepage;private int idx = 0;public BrowserHistory(String h) {homepage = h;timeslices.add(homepage);}public void visit(String url) {  timeslices = new ArrayList(timeslices.subList(0, idx + 1));timeslices.add(url);idx++;}public String back(int steps) {if (idx - steps <= 0) {idx = 0;return homepage;}idx = idx - steps;return timeslices.get(idx);}public String forward(int steps) {if (steps + idx >= timeslices.size() ) {idx = timeslices.size() - 1;return timeslices.get(idx);}idx = idx + steps;return timeslices.get(idx);}
}

解题思路一

为了实现一个支持后退和前进功能的浏览器历史记录管理类,我们需要模拟浏览器的历史记录行为。

 
  1. 数据结构选择

    • 使用一个列表(List<String>)来存储历史记录,其中每个元素代表一个页面的 URL。
    • 使用一个整数变量(idx)来跟踪当前所在的页面位置。
  2. 初始化

    • 在类的构造函数中,将主页(homepage)添加到列表中,并将索引初始化为 0,表示当前位于主页。
  3. 访问新页面

    • 当访问新页面时,需要将当前页面及之后的所有前进记录清空。这可以通过截断列表到当前索引 + 1 的位置,然后添加新的 URL 并增加索引来实现。
  4. 后退操作

    • 后退操作需要根据给定的步数(steps)调整当前索引。如果步数超过可后退的范围,则将索引调整到 0(主页)。
    • 返回调整后的当前页面 URL。
  5. 前进操作

    • 前进操作需要根据给定的步数(steps)调整当前索引。如果步数超过可前进的范围,则将索引调整到列表的最后一个位置。
    • 返回调整后的当前页面 URL。
 

破题关键

 
  1. 初始化历史记录

    • 在构造函数中,将主页添加到列表中,并设置初始索引为 0。
  2. 处理访问新页面

    • 当访问新页面时,截断列表到当前索引 + 1 的位置,以清空所有前进记录。
    • 将新 URL 添加到列表末尾,并将索引增加 1。
  3. 处理后退操作

    • 计算后退后的索引位置,如果步数超过可后退的范围,则将索引设置为 0。
    • 返回后退后的当前页面 URL。
  4. 处理前进操作

    • 计算前进后的索引位置,如果步数超过可前进的范围,则将索引设置为列表的最后一个位置。
    • 返回前进后的当前页面 URL。

题解二

class BrowserHistory {String[] history=new String[5001];int index;int bound;public BrowserHistory(String homepage) {history[0]=homepage;index=0;bound=0;}public void visit(String url) {index++;history[index]=url;bound=index;}public String back(int steps) {if(steps>index){index=0;return history[index];}index-=steps;return history[index];}public String forward(int steps) {if(index+steps>bound){index=bound;return history[index];}index+=steps;return history[index];}
}

解题思路二

为了实现一个支持后退和前进功能的浏览器历史记录管理类,我们需要模拟浏览器的历史记录行为。以下是实现该类的详细思路:

 
  1. 数据结构选择

    • 使用一个列表(history)来存储浏览的历史记录,每个元素代表一个访问的 URL。
    • 使用两个指针:index 表示当前所在的页面位置,bound 表示历史记录的最远位置(即访问过的新页面的最远索引)。
  2. 初始化

    • 在构造函数中,初始化历史记录列表,将主页设置为第一个元素,并将 index 和 bound 初始化为 0。
  3. 访问新页面

    • visit 方法用于访问新页面。每次访问新页面时,index 增加 1,新的 URL 被存储在 history 列表中,并更新 bound 为当前 index,表示新的最远位置。
  4. 后退操作

    • back 方法用于后退指定的步数。如果后退的步数超过当前可以后退的最大步数(即 index 的值),则直接回到主页(index 设为 0)。否则,index 减去指定的步数。
  5. 前进操作

    • forward 方法用于前进指定的步数。如果前进的步数超过当前可以前进的最大步数(即 index 到 bound 的距离),则直接回到最远位置(index 设为 bound)。否则,index 加上指定的步数。
 

破题关键

 
  • 历史记录的存储:使用一个列表来存储所有访问过的 URL,确保能够快速访问和修改。
  • 指针的维护:通过 index 和 bound 来维护当前页面的位置和历史记录的最远位置,确保后退和前进操作的高效性。
  • 边界条件处理:在后退和前进操作中,处理超出边界的情况,确保不会越界访问历史记录列表。

 制作不易,您的关注与点赞是我最大的动力! 欢迎订阅!

http://www.dtcms.com/wzjs/135146.html

相关文章:

  • 济南网站建设就选搜点网络okseo是什么平台
  • 网页美工设计中职期末试卷seo一个关键词多少钱
  • 广告网站建设制作设计服务商网络营销做得好的公司
  • 中国设计师网上家园百度seo课程
  • 手机网站建设 苏州株洲seo推广
  • 找做企业网站免费做网站的网站
  • 郑州做网站公司天强科技图片外链在线生成
  • 网站建设需要有什么特点5118
  • 网站开发工程师前景分析重庆搜索排名提升
  • 联想粒子云可以做网站技术短期培训班
  • 网站开发制作报价单维普网论文收录查询
  • 中企动力提供网站建设营销的概念是什么
  • 上海市住房建设部官方网站微信引流推广精准粉
  • 苏州网站维护搜索引擎营销简称seo
  • 门户型网站都有哪些百度的排名规则详解
  • 开平市网站建设网络服务器有哪些
  • 如何把自己做的网站放到内网济南网络推广
  • wordpress广告设置seo1域名查询
  • 动态网站模板下载图片外链
  • 30个做设计的网站中国教育培训网
  • 西安小公司网站建设杭州推广系统
  • 开发一个icp网站需要多少钱免费访问国外网站的app
  • 顺义做网站同学网络广告营销方案
  • 来一个网站谢谢了上海百度推广优化
  • bitget wallet官方网站下载营销策划书格式及范文
  • 公司网络维修seo优化顾问服务
  • 新闻网站建设经验抖音seo排名软件
  • j2ee做的网站杭州seo工作室
  • 甘肃网站建设哪家便宜杭州seo首页优化软件
  • 网站后台不显示验证码营销渠道