2130、链表最大孪生和
题目:
解答:
同样143修改,head和head2两个指针同时遍历,每次遍历更新ans
class Solution {
public:ListNode *rev(ListNode *head){ListNode *cur = head;ListNode *pre = nullptr;while(cur){ListNode *nxt = cur->next;cur->next = pre;pre = cur;cur = nxt;}return pre;}ListNode *midd(ListNode *head){ListNode *fast = head;ListNode *slow = head;while(fast && fast->next){fast = fast->next->next;slow = slow->next;}return slow;}int pairSum(ListNode* head) {int ans = 0;ListNode *mid = midd(head);ListNode *head2 = rev(mid);while(head2){ans = max(ans,head->val+head2->val);head = head->next;head2 = head2->next;}return ans;}
};
时间复杂度O(n)
空间复杂度O(1)