@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...
 
 
Back to Top