@SomeBottleLeetcode每日一题 —— 2130. 链表最大孪生和 中发帖

思路
首先容易想到的是可以用快慢指针,把链表用一趟扫描截成两半。用栈来存储翻转后的前半段链表然后进行成对求和。
进一步,可以不需要额外空间,原地用头插法构造前半段链表翻转后的链表即可。

代码
链栈(无额外空间):
class Solution {
public:
int pairSum(ListNode* head) {
// 链表节点数为偶数
// 快慢指针找中间点
ListNode *slow=head,*fast=head;
ListNode *rev=nullptr; // 前半段逆转的链表
while(fast!=nullptr){
ListNode* sNext=slow->next;
ListNode* fNext=fast->n...