日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

LeetCode 1472. 设计浏览器历史记录(双栈)

發布時間:2024/7/5 HTML 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1472. 设计浏览器历史记录(双栈) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 題目

你有一個只支持單個標簽頁的 瀏覽器 ,最開始你瀏覽的網頁是 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"提示: 1 <= homepage.length <= 20 1 <= url.length <= 20 1 <= steps <= 100 homepage 和 url 都只包含 '.' 或者小寫英文字母。 最多調用 5000 次 visit, back 和 forward 函數。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/design-browser-history
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

類似文章:

數據結構–棧--瀏覽器前進后退應用
POJ 1028 瀏覽器前進后退(雙棧)

class BrowserHistory { // C++stack<string> bk, ft;string cur; public:BrowserHistory(string homepage) {cur = homepage;}void visit(string url) {while(!ft.empty())ft.pop();bk.push(cur);cur = url;}string back(int steps) {ft.push(cur);while(--steps && !bk.empty()){ft.push(bk.top());bk.pop();}if(!bk.empty()){cur = bk.top();bk.pop();}else{cur = ft.top();ft.pop();}return cur;}string forward(int steps) {bk.push(cur);while(--steps && !ft.empty()){bk.push(ft.top());ft.pop();}if(!ft.empty()){cur = ft.top();ft.pop();}else{cur = bk.top();bk.pop();}return cur;} };

484 ms 87.2 MB

  • python3 用 list 模擬,左邊為 back,右邊為 front
class BrowserHistory: # py3def __init__(self, homepage: str):self.pos = 0self.stk = [homepage]def visit(self, url: str) -> None:self.pos += 1self.stk = self.stk[0:self.pos] # 刪除frontself.stk.append(url) def back(self, steps: int) -> str:self.pos = max(0, self.pos-steps)return self.stk[self.pos]def forward(self, steps: int) -> str:self.pos = min(len(self.stk)-1, self.pos+steps)return self.stk[self.pos]

236 ms 15.6 MB

總結

以上是生活随笔為你收集整理的LeetCode 1472. 设计浏览器历史记录(双栈)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。