27 lines
465 B
Go
27 lines
465 B
Go
package main
|
|
|
|
func pairSum(head *ListNode) int {
|
|
findMidAndBuild := func() ([]int, *ListNode) {
|
|
stack := make([]int, 0)
|
|
|
|
slow, fast := head, head
|
|
for fast != nil {
|
|
stack = append(stack, slow.Val)
|
|
slow, fast = slow.Next, fast.Next.Next
|
|
}
|
|
|
|
return stack, slow
|
|
}
|
|
|
|
stack, node := findMidAndBuild()
|
|
|
|
foundMax, idx := 0, len(stack)-1
|
|
for node != nil {
|
|
foundMax = max(foundMax, stack[idx]+node.Val)
|
|
|
|
node = node.Next
|
|
idx--
|
|
}
|
|
|
|
return foundMax
|
|
}
|