Re: [閒聊] 每日LeetCode

看板Marginalman作者 (みけねこ的鼻屎)時間1年前 (2023/03/18 13:44), 編輯推噓3(303)
留言6則, 5人參與, 1年前最新討論串265/719 (看更多)
1472. Design Browser History 設計出瀏覽器的歷史記錄功能,包含: 1.BrowserHistory(string homepage) 初始化瀏覽器類別。 2.void visit(string url) 訪問url位置,並清空所有下一頁。 3.string back(int steps) 回到歷史記錄的上一頁並返回當前頁面,如果頁數不夠則返回最底頁。 4.string forward(int steps) 回到歷史記錄的下一頁並返回當前頁面,如果頁數不夠則返回最底頁。 Example: Input: ["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]] Output: [null,null,null,null,"facebook.com","google.com","facebook.com",null,"linkedin.com","google.com","leetcode.com"] Explanation: BrowserHistory browserHistory = new BrowserHistory("leetcode.com"); browserHistory.visit("google.com"); // You are in "leetcode.com". Visit "google.com" browserHistory.visit("facebook.com"); // You are in "google.com". Visit "facebook.com" browserHistory.visit("youtube.com"); // You are in "facebook.com". Visit "youtube.com" browserHistory.back(1); // You are in "youtube.com", move back to "facebook.com" return "facebook.com" browserHistory.back(1); // You are in "facebook.com", move back to "google.com" return "google.com" browserHistory.forward(1); // You are in "google.com", move forward to "facebook.com" return "facebook.com" browserHistory.visit("linkedin.com"); // You are in "facebook.com". Visit "linkedin.com" browserHistory.forward(2); // You are in "linkedin.com", you cannot move forward any steps. browserHistory.back(2); // You are in "linkedin.com", move back two steps to "facebook.com" then to "google.com". return "google.com" browserHistory.back(7); // You are in "google.com", you can move back only one step to "leetcode.com". return "leetcode.com" 思路: 1.用一個雙向鏈結串列表示歷史記錄,back和forward就只是移動指標,visit就new一個 新的node並把右邊的連結打斷即可。 Java Code: ------------------------------------- class BrowserHistory { private Node curr; public BrowserHistory(String homepage) { curr = new Node(homepage); } public void visit(String url) { Node node = new Node(url); curr.next = node; node.prev = curr; curr = curr.next; } public String back(int steps) { if (curr.prev == null) { return curr.val; } for (int i = 0; i < steps && curr.prev != null; i++) { curr = curr.prev; } return curr.val; } public String forward(int steps) { if (curr.next == null) { return curr.val; } for (int i = 0; i < steps && curr.next != null; i++) { curr = curr.next; } return curr.val; } } class Node { Node next; Node prev; String val; public Node(){}; public Node(String val) { this.val = val; } } ------------------------------------- -- https://i.imgur.com/PIoxddO.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.75.86 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1679118274.A.309.html

03/18 13:44, 1年前 , 1F
大師
03/18 13:44, 1F

03/18 13:45, 1年前 , 2F
大師
03/18 13:45, 2F

03/18 14:33, 1年前 , 3F
大師
03/18 14:33, 3F

03/18 14:58, 1年前 , 4F
今天的太難了吧
03/18 14:58, 4F

03/18 16:45, 1年前 , 5F
都忘了還有這種作法 我是用一個vector+2個變數
03/18 16:45, 5F

03/18 16:45, 1年前 , 6F
分別紀錄當前位置跟總size
03/18 16:45, 6F
文章代碼(AID): #1a5K_2C9 (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1a5K_2C9 (Marginalman)