每日一题(LeetCode)----链表--链表最大孪生和

news2024/9/24 21:16:05

每日一题(LeetCode)----链表–链表最大孪生和

1.题目(2130. 链表最大孪生和)

  • 在一个大小为 nn偶数 的链表中,对于 0 <= i <= (n / 2) - 1i ,第 i 个节点(下标从 0 开始)的孪生节点为第 (n-1-i) 个节点 。

    • 比方说,n = 4 那么节点 0 是节点 3 的孪生节点,节点 1 是节点 2 的孪生节点。这是长度为 n = 4 的链表中所有的孪生节点。

    孪生和 定义为一个节点和它孪生节点两者值之和。

    给你一个长度为偶数的链表的头节点 head ,请你返回链表的 最大孪生和

    示例 1:

    img

    输入:head = [5,4,2,1]
    输出:6
    解释:
    节点 0 和节点 1 分别是节点 3 和 2 的孪生节点。孪生和都为 6 。
    链表中没有其他孪生节点。
    所以,链表的最大孪生和是 6 。
    

    示例 2:

    img

    输入:head = [4,2,2,3]
    输出:7
    解释:
    链表中的孪生节点为:
    - 节点 0 是节点 3 的孪生节点,孪生和为 4 + 3 = 7 。
    - 节点 1 是节点 2 的孪生节点,孪生和为 2 + 2 = 4 。
    所以,最大孪生和为 max(7, 4) = 7 。
    

    示例 3:

    img

    输入:head = [1,100000]
    输出:100001
    解释:
    链表中只有一对孪生节点,孪生和为 1 + 100000 = 100001 。
    

    提示:

    • 链表的节点数目是 [2, 105] 中的 偶数
    • 1 <= Node.val <= 105

2.解题思路

思路一

将链表的后一半进行反转,然后将链表的前一半和后一半进行相加,通过比较得到结果
1.找到链表的后一半的起始节点

我们先计算出整个链表的长度,然后用一个指针指向链表表头,向后走整个链表的一半长度,得到链表后一半的表头

2.进行反转

通过头,拿,断这三个指针实现反转

3.定义一个存结果的变量,将反转后的后一半链表与原链表的前一半进行相加(这里思路一和思路二实现方式不一样,但是都差不多),然后每求出一个值,就和存结果的变量进行比较,如果大于,就把存结果的变量进行更新,如果不大于,就不进行更新

思路二:思路二和思路一一样就是实现的方法不同

1.找到链表的后一半的起始节点

我们使用快慢指针找出后一半部分的起始节点。我们用慢指针和快指针同时指向 头节点,然后,我们每次将慢指针向后移动一个节点,同时快指针向后移动两个节点。当 快指针指向空结点时,慢指针就刚好指向链表了后一半部分的首节点

2.进行反转

通过头,拿,断这三个指针实现反转

3.定义一个存结果的变量,将反转后的后一半链表与原链表的前一半进行相加(这里思路一和思路二实现方式不一样,但是都差不多),然后每求出一个值,就和存结果的变量进行比较,如果大于,就把存结果的变量进行更新,如果不大于,就不进行更新

3.写出代码

思路一的代码

class Solution {
public:
    int pairSum(ListNode* head) {
        int length1=0;
        ListNode* Temp=head;
        while(Temp){
            length1++;
            Temp=Temp->next;
        }
        int length2=length1/2;
        int t=length2;
        Temp=head;
        while(t--){
            Temp=Temp->next;
        }
        
        ListNode* head2=NULL;
        ListNode* na=Temp;
        ListNode* duan=Temp->next;
        while(duan){
            na->next=head2;
            head2=na;
            na=duan;
            duan=duan->next;
        }
        na->next=head2;
        head2=na;
        int res=-1;
        for(int i=0;i<length2;i++){
            res=max(head->val+head2->val,res);
            head=head->next;
            head2=head2->next;
        }
        return res;
    }
};

思路二的代码

class Solution {
public:
    int pairSum(ListNode* head) {
        ListNode* fast=head;
        ListNode* slow=head;
        while(fast){
            slow=slow->next;
            fast=fast->next->next;
        }

        ListNode* head2=NULL;
        ListNode* na=slow;
        ListNode* duan=slow->next;
        while(duan){
            na->next=head2;
            head2=na;
            na=duan;
            duan=duan->next;
        }
        na->next=head2;
        head2=na;
        int res=-1;
        while(head2){
            res=max(head->val+head2->val,res);
            head2=head2->next;
            head=head->next;
        }
        return res;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1248220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Log4j2.xml不生效:WARN StatusLogger Multiple logging implementations found:

背景 将 -Dlog4j.debug 添加到IDEA的类的启动配置中 运行上图代码&#xff0c;这里log4j2.xml控制的日志级别是info&#xff0c;很明显是没生效。 DEBUG StatusLogger org.slf4j.helpers.Log4jLoggerFactory is not on classpath. Good! DEBUG StatusLogger Using Shutdow…

路由VRRP配置例子

拓朴如下&#xff1a; 主要配置如下&#xff1a; [R1] interface GigabitEthernet0/0/0ip address 10.1.1.1 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.1.254vrrp vrid 1 priority 200vrrp vrid 1 preempt-mode timer delay 20 # interface GigabitEthernet0/0/1ip address …

RHCE8 资料整理(八)

RHCE8 资料整理 第 8 篇 容器管理第 27 章 使用podman管理容器27.1 安装及配置podman27.2 镜像管理27.2.1 镜像的命名27.2.2 对镜像重新做标签27.2.3 删除镜像27.2.4 查看镜像的层结构27.2.5 导出和导入镜像 27.3 创建容器27.3.1 创建容器27.3.2 容器的生命周期27.3.3 创建临时…

积分球吸收光谱测量的领域有哪些?

积分球吸收光谱测量是一种常用的吸收光谱测量方法&#xff0c;它通过将样品放置在积分球的入口处&#xff0c;球内的光线经过多次反射后形成均匀的照度分布&#xff0c;然后使用光度计或光谱仪对光线进行测量&#xff0c;可以获得样品的相关参数。 在积分球吸收光谱测量中&…

2023.11.24 海豚调度,postgres库使用

目录 海豚调度架构dolphinscheduler DAG(Directed Acyclic Graph)&#xff0c; 个人自用启动服务 DS的架构(海豚调度) 海豚调度架构dolphinscheduler 注:需要先开启zookeeper服务,才能进行以下操作 通过UI进行工作流的配置操作, 配置完成后, 将其提交执行, 此时执行请求会被…

【C语言】qsort的秘密

一&#xff0c;本文目标 qsort函数可以对任意类型数据甚至是结构体内部的数据按照你想要的规则排序&#xff0c;它的功能很强大&#xff0c;可是为什么呢&#xff1f; 我将通过模拟实现qsort函数来让你对这整个过程有一个清晰的深刻的理解。 二&#xff0c;qsort函数原型 v…

JDBC编程方法及细节

JDBC&#xff08;Java Database Connectivity&#xff09;是Java编程语言用于连接和操作数据库的API&#xff08;Application Programming Interface&#xff09;。它为开发人员提供了一组Java类和接口&#xff0c;用于与各种关系型数据库进行通信。使用JDBC&#xff0c;开发人…

【Linux】fork()

文章目录 一、fork()是什么&#xff1f;二、fork()干了什么&#xff1f;三、fork()怎么用&#xff1f; 一、fork()是什么&#xff1f; fork()函数其实是在Linux系统中用于创建一个新的进程。让我们看看Linux中是怎么描述的&#xff1f;运行man fork。 RETURN VALUE On success…

探究Kafka原理-3.生产者消费者API原理解析

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44…

github国内访问小解(windows)

git 下载安装 使用 github 前必须确保电脑上已经安装了 Git&#xff0c;可以从 Git 官方网站去下载。 官方的网站在国内访问会比较慢&#xff0c;这里可以选择国内镜像&#xff1a;https://registry.npmmirror.com/binary.html?pathgit-for-windows/ github 之旅 确认电脑已…

使用向日葵开机棒进行远程开机

文章目录 1\. 前言2\. 说明3\. 开机棒设置4\. 电脑端设置4.1. 电脑端允许网卡唤醒4.1.1. 关闭设备节能4.2. 将电脑端设备加入设备列表 5\. 手机端5.1. 添加开机棒5.2. 绑定主机5.2.1. 添加成功的主机 6\. 唤醒 1. 前言 如果我们出差在外或者人不在实验室&#xff0c;如果可以使…

Spring 七大组件

文章目录 Spring 七大组件 Spring 七大组件 核心容器(Spring core) 核心容器提供Spring框架的基本功能。Spring以bean的方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean&#xff0c;它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式…

Linux python安装 虚拟环境 virtualenv,以及 git clone的 文件数据, 以及 下资源配置

根目录创建 venvs 文件夹 sudo mkdir /venvs 进入 /venvs 目录 cd /venvsp 创建虚拟环境&#xff0c;前提要按照 python3 安装 的 命令 sudo apt install python3 sudo python3 -m venv 虚拟环境名 激活虚拟环境 source /venvs/zen-venv/bin/activate 安装flask pip install fl…

测试工具JMeter的使用

目录 JMeter的安装配置 测试的性能指标 TPS 响应时长 并发连接 和 并发用户 CPU/内存/磁盘/网络 负载 性能测试实战流程 JMeter JMeter快速上手 GUI模式 运行 HTTP请求默认值 录制网站流量 模拟间隔时间 Cookie管理器 消息数据关联 变量 后置处理器 CSV 数据文…

Spring AOP:什么是AOP? 为什么要用AOP?如何学习AOP?

文章目录 &#x1f386;前言1.为什么要用 AOP3.如何学习去 AOP?3.1 AOP 的组成切面&#xff08;Aspect&#xff09;连接点&#xff08;Join Point&#xff09;切点&#xff08;Pointcut&#xff09;通知&#xff08;Advice&#xff09; 3. Spring AOP 实现3.1 普通的方式实现 …

切换服务器上自己用户目录下的 conda 环境和一个外部的 Conda 环境

如果我们有自己的 Miniconda 安装和一个外部的 Conda 环境&#xff08;比如一个全局安装的 Anaconda&#xff09;&#xff0c;我们可以通过修改 shell 环境来切换使用它们。这通常涉及到更改 PATH 环境变量&#xff0c;以便指向你想要使用的 Conda 安装的可执行文件&#xff1a…

二维数值型数组例题2

1、内部和 题目描述 给定一个m行n列的二维矩阵&#xff0c;求其内部元素和 输入要求 第一行为两个整数&#xff1a;m和n&#xff08;0<m,n<10&#xff09;&#xff0c;接下来输入m*n的二维矩阵 输出要求 二维矩阵内部元素和 输入样例 3 3 1 2 3 4 5 6 7 8 9 …

2023年11月18日~11月24日周报(调试OpenFWI代码)

目录 一、前言 二、完成情况 2.1 OpenFWI工程文件框架的理解 2.2 InversionNet网络的理解 2.3 dataset.py的理解 三、遇到的部分问题及解决 3.1 数据读取 3.2 Dataloader中设置num_workers-MemoryError 3.3 RuntimeError: CUDA out of memory 3.4 loss值的变化 四、相…

MySQL介绍及安装

MySQL介绍及安装 一、MySQL概述 1、关系型数据库与非关系型数据库 RDBMS&#xff08;relational database management system&#xff09;&#xff0c;既关系型数据库管理系统。 简单来说&#xff0c;关系型数据库&#xff0c;是指采用了二维表格来组织数据的数据库。 扩展…

Codeforces Round 786 (Div. 3) D. A-B-C Sort

D. A-B-C Sort 步骤 1 &#xff1a;当 a不为空时&#xff0c;从 a中取出最后一个元素&#xff0c;并将其移动到数组 b的中间。如果 b 当前长度为奇数&#xff0c;则可以选择&#xff1a;将 a 中的元素放到 b 中间元素的左边或右边。结果&#xff0c; a 变空&#xff0c; b 由 n…