File tree Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * Definition for singly-linked list.
3+ * function ListNode(val, next) {
4+ * this.val = (val===undefined ? 0 : val)
5+ * this.next = (next===undefined ? null : next)
6+ * }
7+ */
8+
9+ /**
10+ * Linear Time
11+ * Time O(n) | Space O(1)
12+ * @param {ListNode } head
13+ * @return {number }
14+ */
15+ var pairSum = function ( head ) {
16+ const mid = llLength ( head ) / 2 ;
17+ const rightPointer = getRightPointer ( head , mid ) ;
18+ const leftPointer = reverseLL ( head , mid ) ;
19+
20+ return getMax ( leftPointer , rightPointer ) ;
21+ } ;
22+
23+ var getMax = ( leftPointer , rightPointer ) => {
24+ let max = 0 ;
25+ while ( leftPointer && rightPointer ) {
26+ max = Math . max ( leftPointer . val + rightPointer . val , max ) ;
27+ leftPointer = leftPointer . next ;
28+ rightPointer = rightPointer . next ;
29+ }
30+ return max ;
31+ }
32+ var getRightPointer = ( head , mid ) => {
33+ let count = 0 ;
34+ let rightPointer = head ;
35+ while ( count < mid ) {
36+ rightPointer = rightPointer . next ;
37+ count ++ ;
38+ }
39+ return rightPointer ;
40+ }
41+
42+ var llLength = ( head ) => {
43+ let count = 0 ;
44+ while ( head ) {
45+ head = head . next ;
46+ count ++ ;
47+ }
48+ return count ;
49+ } ;
50+
51+ var reverseLL = ( head , len ) => {
52+ let count = 0 ;
53+ let temp = null ;
54+ while ( count < len ) {
55+ const next = head . next ;
56+ head . next = temp ;
57+ temp = head ;
58+ head = next ;
59+ count ++ ;
60+ }
61+ return temp ;
62+ } ;
You can’t perform that action at this time.
0 commit comments