1.题目


2.思路

链表转数组
(1)遍历链表,把所有节点值放进 ArrayList。
(2)n = size,只遍历前半段 i = 0 ... n/2-1
(3)计算每对 arr[i] + arr[n-1-i],维护最大值。
Java 里 ArrayList 不能用 list[i] 这种数组下标访问,要用list.get(i)去取元素
3.代码实现
java
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public int pairSum(ListNode head) {
ArrayList<Integer> list=new ArrayList<>();
while(head!=null)
{
list.add(head.val);
head=head.next;
}
int n=list.size();
int m=n/2;
int sum=0;
for(int i=0;i<m;i++)
{
sum=Math.max(sum,list.get(i)+list.get(n-i-1));
}
return sum;
}
}