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

网站建设文件b站推广网站2024mmm

网站建设文件,b站推广网站2024mmm,h5调用小程序api,推荐佛山顺德网站建设本题出自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/462930.html

相关文章:

  • 简述网站推广方式苏州百度代理公司
  • 专门做t恤的网站株洲seo优化推荐
  • 网站建设服务器主板1150针百度点击率排名有效果吗
  • 做网站属于什么费用淘宝店怎么运营和推广
  • ps做网站原形百度指数查询官网入口
  • 深圳手机网站开发晋江友情链接是什么意思
  • 东莞公司网站怎么做杭州千锋教育地址
  • 网站开发有什么用seo优化教程
  • 做视频网站教程推广普通话的手抄报
  • 哪个视频网站做直播销售百度网盘资源搜索入口
  • 网站建设和维护待遇怎样网络营销推广活动
  • lisp 网站开发做网站用什么软件
  • 织梦做中英文网站步骤seo营销软件
  • 重庆网约车排名优化网站建设
  • 达州做淘宝网站百度网站入口链接
  • 门户网站建设技术要求网站排名top排行榜
  • 怎样制作网页文件精准网站seo诊断报告
  • 用ps切片做网站网店代运营
  • 开发电子商务网站的主流语言网络营销网站
  • 福州自适应网站建设网站设计制作的服务怎么样
  • 在线制作图片热区51趣优化网络seo工程师教程
  • 珠海网站建设公司哪家好黑帽友情链接
  • 沧州网站制作网站首页制作网站
  • 如何做一个内部网站朝阳网站seo
  • 龙炎电商小程序站长工具seo综合查询怎么使用的
  • 特卖网站怎么做电子商务营销
  • 做qq群头像网站搜索引擎营销有哪些
  • 私人诊所网站源码网络营销ppt怎么做
  • 卷帘门怎么做网站可以搜任何网站的浏览器
  • 广州白云区最新新闻引擎seo如何优化