Maximum Twin Sum of a Linked List
Solution
class Solution:
def pairSum(self, head: Optional[ListNode]) -> int:
slow, fast = head, head
while fast and fast.next:
fast = fast.next.next
slow = slow.next
prev, curr = None, slow
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
max_sum = 0
first_half, second_half = head, prev
while second_half:
max_sum = max(max_sum, first_half.val + second_half.val)
first_half = first_half.next
second_half = second_half.next
return max_sum
