题目描述
解题思路
开始的时候,可能想到快慢指针、想到栈等等,但后来发现,只需要将链表中的数字转存到ArrayList里面,然后遍历,遍历到一半,统计一个最大值就可以了。
解题代码
import java.util.ArrayList;
class ListNode {
int val;
ListNode next;
ListNode() {
}
ListNode(int val) {
this.val = val;
}
ListNode(int val, ListNode next) {
this.val = val;
this.next = next;
}
}
public class Solution5961 {
public int pairSum(ListNode head) {
ArrayList<Integer> arrayList = new ArrayList<>();
ListNode p = head;
while (p != null) {
arrayList.add(p.val);
p = p.next;
}
int n = arrayList.size();
int res = Integer.MIN_VALUE;
for (int i = 0; i <= (n / 2) - 1; i++) {
res = Math.max(res, arrayList.get(i) + arrayList.get((n - 1 - i)));
}
return res;
}
}
解题结果