Linked list problem. Direct method requires 2 iterations, while using double pointers can save one.
Solution:
# T:O(n) S:O(1) # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: # @param {ListNode} head # @param {integer} n # @return {ListNode} def removeNthFromEnd(self, head, n): dummy = ListNode(0) dummy.next = head p, q, i = dummy, dummy, n while i > 0: q = q.next i -= 1 while q.next != None: p = p.next q = q.next # now we just need to remove the element behind p r = p.next p.next = r.next return dummy.nextRun Time: 48 ms
No comments:
Post a Comment