|
14 | 14 | */
|
15 | 15 | var pairSum = function (head) {
|
16 | 16 | const mid = llLength(head) / 2;
|
17 |
| - |
18 |
| - // get the right starting pointer |
19 |
| - let count = 0; |
20 |
| - let rightPointer = head; |
21 |
| - while (count < mid) { |
22 |
| - rightPointer = rightPointer.next; |
23 |
| - count++; |
24 |
| - } |
25 |
| - |
26 |
| - // reverse the left portion of the array |
27 |
| - leftPointer = reverseLL(head, mid); |
28 |
| - |
29 |
| - let max = 0; |
30 |
| - while (leftPointer && rightPointer) { |
31 |
| - max = Math.max(leftPointer.val + rightPointer.val, max); |
32 |
| - leftPointer = leftPointer.next; |
33 |
| - rightPointer = rightPointer.next; |
34 |
| - } |
35 |
| - |
36 |
| - return max; |
| 17 | + const rightPointer = getRightPointer(head, mid); |
| 18 | + const leftPointer = reverseLL(head, mid); |
| 19 | + |
| 20 | + return getMax(leftPointer, rightPointer); |
37 | 21 | };
|
38 | 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 | +} |
39 | 41 |
|
40 | 42 | var llLength = (head) => {
|
41 | 43 | let count = 0;
|
|
0 commit comments