Design Browser History
I did this Leetcode! Here is my solution:
class ListNode: def __init__(self, val, prev=None, next=None): self.val = val self.next = next self.prev = prev class BrowserHistory(object): def __init__(self, homepage): """ :type homepage: str """ self.curr = ListNode(homepage) def visit(self, url): """ :type url: str :rtype: None """ self.curr.next = ListNode(url, self.curr) self.curr = self.curr.next def back(self, steps): """ :type steps: int :rtype: str """ while self.curr.prev and steps > 0: steps -= 1 self.curr = self.curr.prev return self.curr.val def forward(self, steps): """ :type steps: int :rtype: str """ while self.curr.next and steps > 0: steps -= 1 self.curr = self.curr.next return self.curr.val # Your BrowserHistory object will be instantiated and called as such: # obj = BrowserHistory(homepage) # obj.visit(url) # param_2 = obj.back(steps) # param_3 = obj.forward(steps)