LeetCode Algorithm 2130. 链表最大孪生和

Posted wx5e46005fc4d21

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小数查询