LeetCode Algorithm 2130. 链表最大孪生和

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 2130. 链表最大孪生和相关的知识,希望对你有一定的参考价值。

题目链接:2130. 链表最大孪生和

Ideas

算法:双指针、回文判断
数据结构:链表
思路:这道题让我想起来之前做的判断回文链表的题目,然后我就想到了一个类似的解法,先用双指针把链表的后半段翻转过来,然后还是双指针分别从头尾往中间走,同时另外定义一个变量记录最大的孪生和。

Code

C++

class Solution 
public:
    int pairSum(ListNode* head) 
        // 1.快慢指针找到链表中间位置
        ListNode *quick = head, *slow = head;
        while (quick->next->next != nullptr) 
            slow = slow->next;
            quick = quick->next->next;
                
        // 2.从链表中间位置开始将后续节点翻转
        ListNode *cur = slow->next;
        slow->next = nullptr;
        while (cur != nullptr) 
            ListNode *nxt = cur->next;
            cur->next = slow;
            slow = cur;
            cur = nxt;
        
        // 3.双指针分别从头尾开始遍历,并统计最大孪生和
        int ans = 0;
        quick = head;
        ListNode *tail = slow;
        while (quick != nullptr && slow != nullptr) 
            ans = max(ans, quick->val + slow->val);
            quick = quick->next;
            slow = slow->next;
        
        // 4.将翻转的节点再翻转回去
        cur = tail->next;
        tail->next = nullptr;
        while (cur != nullptr) 
            ListNode *nxt = cur->next;
            cur->next = tail;
            tail = cur;
            cur = nxt;
        
        return ans;
    
;

以上是关于LeetCode Algorithm 2130. 链表最大孪生和的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 2130. 链表最大孪生和

算法leetcode每日一练2130. 链表最大孪生和

算法leetcode每日一练2130. 链表最大孪生和

Aizu2130-Billion Million Thousand-dp

USG2130配置nat策略路由

OJ2130K小数查询