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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

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

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

1. 題目

你有一個(gè)只支持單個(gè)標(biāo)簽頁的 瀏覽器 ,最開始你瀏覽的網(wǎng)頁是 homepage ,你可以訪問其他的網(wǎng)站 url ,也可以在瀏覽歷史中后退 steps 步或前進(jìn) steps 步。

請(qǐng)你實(shí)現(xiàn) BrowserHistory 類:

  • BrowserHistory(string homepage) ,用 homepage 初始化瀏覽器類。
  • void visit(string url) 從當(dāng)前頁跳轉(zhuǎn)訪問 url 對(duì)應(yīng)的頁面 。執(zhí)行此操作會(huì)把瀏覽歷史前進(jìn)的記錄全部刪除。
  • string back(int steps) 在瀏覽歷史中后退 steps 步。如果你只能在瀏覽歷史中后退至多 x 步且 steps > x ,那么你只后退 x 步。請(qǐng)返回后退 至多 steps 步以后的 url 。
  • string forward(int steps) 在瀏覽歷史中前進(jìn) steps 步。如果你只能在瀏覽歷史中前進(jìn)至多 x 步且 steps > x ,那么你只前進(jìn) x 步。請(qǐng)返回前進(jìn) 至多 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" ,前進(jìn)到 "facebook.com" 并返回 "facebook.com" browserHistory.visit("linkedin.com"); // 你原本在瀏覽 "facebook.com" 。 訪問 "linkedin.com" browserHistory.forward(2); // 你原本在瀏覽 "linkedin.com" ,你無法前進(jìn)任何步數(shù)。 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 都只包含 '.' 或者小寫英文字母。 最多調(diào)用 5000 次 visit, back 和 forward 函數(shù)。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/design-browser-history
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

2. 解題

類似文章:

數(shù)據(jù)結(jié)構(gòu)–棧--瀏覽器前進(jìn)后退應(yīng)用
POJ 1028 瀏覽器前進(jìn)后退(雙棧)

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。