Skip to content

Commit 1b58826

Browse files
committed
2130. Maximum Twin Sum of a Linked List
1 parent 87500a4 commit 1b58826

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import scala.annotation.tailrec
2+
3+
/**
4+
* Definition for singly-linked list.
5+
* class ListNode(_x: Int = 0, _next: ListNode = null) {
6+
* var next: ListNode = _next
7+
* var x: Int = _x
8+
* }
9+
*/
10+
11+
class ListNode(_x: Int = 0, _next: ListNode = null) {
12+
var next: ListNode = _next
13+
var x: Int = _x
14+
}
15+
16+
object Solution {
17+
18+
def pairSum(head: ListNode): Int = {
19+
val stack = scala.collection.mutable.Stack.empty[Int]
20+
var it = head
21+
while (it != null) {
22+
stack.push(it.x)
23+
it = it.next
24+
}
25+
val hlen = stack.length / 2
26+
var i = 0
27+
var answer = 0
28+
it = head
29+
while (i < hlen) {
30+
answer = Math.max(answer, it.x + stack.pop())
31+
it = it.next
32+
i += 1
33+
}
34+
answer
35+
}
36+
37+
def pprint(head: ListNode): Unit = {
38+
@tailrec def go(node: ListNode, i: Int): Unit = {
39+
print(s"[$i]=${node.x}, ")
40+
if (node.next == null) ()
41+
else go(node.next, i + 1)
42+
}
43+
44+
go(head, 0)
45+
}
46+
}
47+
48+
49+
// val list = ListNode(5, ListNode(4, ListNode(2, ListNode(1))))
50+
val list = ListNode(47, ListNode(22, ListNode(81, ListNode(46, ListNode(90, ListNode(92, ListNode(9, ListNode(81, ListNode(5, ListNode(9))))))))))
51+
52+
//47,22,81,46,94,95,90,22,55,91,6,83,49,65,10,32,41,26,83,99,14,85,42,99,89,69,30,
53+
//9 5, 81, 9,74,32,92,
54+
55+
Solution.pprint(list)
56+
Solution.pairSum(list)
57+
Solution.pprint(list)

0 commit comments

Comments
 (0)