from collections import deque class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: """ this method takes O(N) space complexity """ dq = deque() node = head while node: dq.append(node) node = node.next if n == len(dq): if len(dq) == 1: return None else: return dq[1] elif n == 1: dq[-2].next = None return dq[0] else: dq[-n - 1].next = dq[-n + 1] return dq[0] # ans = Solution().removeNthFromEnd(ListNode.parse([1,2,3,4,5]), 2) ans = Solution().removeNthFromEnd(ListNode.parse([1, 2]), 1) print(ans) print(ans.serialize())
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: sentinel = ListNode(0, None) node = sentinel carry = 0 while l1 or l2 or carry: s = carry if l1: s += l1.val l1 = l1.next if l2: s += l2.val l2 = l2.next carry = s // 10 node.next = ListNode(s % 10, None) node = node.next return sentinel.next a = ListNode.parse([9, 9, 9, 9, 9, 9, 9]) b = ListNode.parse([9, 9, 9, 9]) ans = Solution().addTwoNumbers(a, b) print(ans.serialize())