【LeetCode】链表 + 快慢指针找中间 + 反转链表 | 2130. 链表最大孪生和

题目

https://leetcode.cn/problems/maximum-twin-sum-of-a-linked-list/description/

思路

  1. 反转整个链表,得到一个新的反转链表
  2. 在原始链表上用快慢指针找到中间节点 slow
  3. 然后让原始链表的前半部分与反转链表的对应部分相加

code

java 复制代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public int pairSum(ListNode head) {
        //反转链表
        ListNode dummy=new ListNode(0,null);//反转链表的dummy节点
        ListNode cur=head;
        ListNode oldNode=null;
        while(cur!=null){
            ListNode newNode=new ListNode(cur.val,oldNode);
            oldNode= newNode;
            dummy.next = newNode;
            cur=cur.next;
        }
        
        //找中间
        ListNode fast=head;
        ListNode slow=head;
        while(fast!=null && fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
        }

				//比大小
        int max=0;
        ListNode cur1=head;
        ListNode cur2=dummy.next;
        while(cur1!=slow){
            int tmp=cur1.val+cur2.val;
            if(tmp>max) max=tmp;
            cur1=cur1.next;
            cur2 =cur2.next;
        }
        return max;

    }
}
相关推荐
不会就选b5 小时前
算法日常・每日刷题--<贪心>14
算法
mmmmath_37 小时前
LeetCode.541.反转字符串II
数据结构·算法·leetcode
Navigator_Z7 小时前
LeetCode //MySQL - 1251. Average Selling Price
c语言·算法·leetcode
醇氧8 小时前
MySQL 8.0 系统表损坏与引擎转换故障排查实战
数据结构·算法
大熊背9 小时前
《Color constancy by characterization of illumination chromaticity》之色度色域最大化算法(二)
算法·白平衡·色度·色温
钓鱼的肝9 小时前
梳理(1-5)
c++·经验分享·笔记·算法·青少年编程
参.商.9 小时前
【Day 53】76. 最小覆盖子串
leetcode·golang
HZZD_HZZD9 小时前
CSDN_批发市场水电漏损归因算法LAM的原理与落地
嵌入式硬件·物联网·算法
shirsl11 小时前
算法 Day 5 树 / 二叉树 + DFS
数据结构·python·算法