LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

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

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

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

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

示例 1:
在这里插入图片描述

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

示例 2:
在这里插入图片描述

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

示例 3:
在这里插入图片描述

输入:head = [1,100000]
输出:100001
解释:
链表中只有一对孪生节点,孪生和为 1 + 100000 = 100001 。提示:
链表的节点数目是 [2, 10^5] 中的 偶数 。
1 <= Node.val <= 10^5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-twin-sum-of-a-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 快慢指针找到链表的中点,断开
  • 反转后面一段链表
  • 双指针从首尾开始遍历,求首尾的和
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:int pairSum(ListNode* head) {ListNode *fast = head, *slow = head, *prev = NULL;while(fast && fast->next){fast = fast->next->next;prev = slow;slow = slow->next;}prev->next = NULL;ListNode* end = reverse(slow);int maxsum = -1;while(end && head){maxsum = max(maxsum, end->val + head->val);end = end->next;head = head->next;}return maxsum;}ListNode* reverse(ListNode *head){if(!head || !head->next) return head;ListNode *prev = NULL, *cur = head, *next = NULL;while(cur){next = cur->next;cur->next = prev;prev = cur;cur = next;}return prev;}
};

208 ms 113.8 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

Splay初步【bzoj1503】

做了一道水题&#xff0c;把bzoj1503用Splay重新写了一下。 1 #include <bits/stdc.h>2 #define rep(i, a, b) for (int i a; i < b; i)3 #define REP(i, a, b) for (int i a; i < b; i)4 #define drep(i, a, b) for (int i a; i > b; i--)5 #define mp make…

原生html5时间组件,JFinal遇到了原生Html5时间组件格式转换问题怎么处理?

今天JBolt种子用户群里有人提问&#xff0c;JFinal针对原生Html5的日期时间选择组件的格式转换支持有问题&#xff0c;报错。于是我在JBolt的Demo中加入了这些去测试一下&#xff0c;这里使用的都是原生Html组件。Input type“text”默认就是一个简单的单行文本输入框。如果修改…

LeetCode 2131. 连接两字母单词得到的最长回文串

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words 。words 中每个元素都是一个包含 两个 小写英文字母的单词。 请你从 words 中选择一些元素并按 任意顺序 连接它们&#xff0c;并得到一个 尽可能长的回文串 。每个元素 至多 只能使用一次。 请你返回你能得到的最长…

十、关于MySQL 标识列,你该了解这些!

标识列: 又称为自增长列 含义&#xff1a;可以不用手动的插入值&#xff0c;系统提供默认的序列值 特点&#xff1a; 1、标识列必须和主键搭配吗&#xff1f;不一定&#xff0c;但要求是一个key 2、一个表可以有几个标识列&#xff1f;至多一个&#xff01; 3、标识列的类型只…

svg defs 进行定义 引用

svg defs 进行定义 引用&#xff1a; <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <%String path request.getContextPath();String basePath request.getScheme() "://" reque…

LeetCode 2132. 用邮票贴满网格图(DP/二维差分)

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的二进制矩阵 grid &#xff0c;每个格子要么为 0 &#xff08;空&#xff09;要么为 1 &#xff08;被占据&#xff09;。 给你邮票的尺寸为 stampHeight x stampWidth 。我们想将邮票贴进二进制矩阵中&#xff0c;且满足以下…

blue html中转换,BlueFox Free PDF to HTML Converter(PDF文件转换软件)

BlueFox Free PDF to HTML Converter是一款pdf文件转换软件&#xff0c;能直接查看PDF文件和对PDF文件进行编辑&#xff0c;支持批量进行转换&#xff0c;使用非常方便&#xff0c;操作简单&#xff0c;有需要可以下载。软件特色通过将PDF转换为HTML网页&#xff0c;您的网站访…

二、前端pink老师的CSS定位学习笔记(超详细,简单易懂)

定位(position) 1. CSS 布局的三种机制 网页布局的核心 —— 就是用 CSS 来摆放盒子位置。 CSS 提供了 3 种机制来设置盒子的摆放位置&#xff0c;分别是普通流、浮动和定位&#xff0c;其中&#xff1a; 普通流&#xff08;标准流&#xff09; 浮动 让盒子从普通流中浮起来 …

高可用+负载均衡 方案

高可用:keepalived / HeartBeat 负载: LVS / Haproxy 浅谈web应用的负载均衡、集群、高可用(HA)解决方案 《构建高性能web站点》笔记--基础架构篇 高可用可伸缩架构实用经验谈 amoeba是一个以MySQL为底层数据存储&#xff0c;并对应用提供MySQL协议接口的proxy。它集中地响应应…

LeetCode 2133. 检查是否每一行每一列都包含全部整数

文章目录1. 题目2. 解题1. 题目 对一个大小为 n x n 的矩阵而言&#xff0c;如果其每一行和每一列都包含从 1 到 n 的 全部 整数&#xff08;含 1 和 n&#xff09;&#xff0c;则认为该矩阵是一个 有效 矩阵。 给你一个大小为 n x n 的整数矩阵 matrix &#xff0c;请你判断…

上传图片自动加水印html,html5上传多个文件并添加水印 实例源码

【实例简介】【实例截图】【核心代码】html5上传多个文件并添加水印body{font-size:12px;}a{text-decoration:none;}a,a:after{-webkit-transition:all 0.3s;-moz-transition:all 0.3s;transition:all 0.3s;}a.btn i{display:block;width:100%;height:100%;position:relative;z…

三、关于网页布局你该知道这些!(布局总结:标准流、浮动、定位)

一个完整的网页&#xff0c;是标准流、浮动、定位一起完成布局的&#xff0c;三者都有自己专门的用法。 标准流 可以让盒子上下排列喝着左右排列&#xff0c;垂直的块级盒子显示就用标准流布局。浮动 可以让多个块级元素一行显示或者左右对齐盒子&#xff0c;多个块级盒子水平…

LoadRunner培训初级教程

一 LoadRunner简介 1.1 Loadrunner介绍 LoadRunner 是 HP Mercury Interactive用来测试应用程序性能的工具 LoadRunner 通过模拟一个多用户并行工作的环境来对应用程序进行负载测试。通过使用最少的硬件资源&#xff0c;这些虚拟用户提供一致的、可重复并可度量的负载&#xf…

android model 设计,Android model层设计

model层在开发app的过程中&#xff0c;不管是使用了mvp还是mvc甚至mvvm模式,model层的设计基本都是一样的&#xff0c;model层可以被称为数据层&#xff0c;它的主要任务就是为上层提供各种的数据服务&#xff0c;上层完全不需要关心这些数据是来自网络&#xff0c;还是内存&am…

LeetCode 2134. 最少交换次数来组合所有的 1 II(数组*2 + 滑动窗口)

文章目录1. 题目2. 解题1. 题目 交换 定义为选中一个数组中的两个 互不相同 的位置并交换二者的值。 环形 数组是一个数组&#xff0c;可以认为 第一个 元素和 最后一个 元素 相邻 。 给你一个 二进制环形 数组 nums &#xff0c;返回在 任意位置 将数组中的所有 1 聚集在一…

四、pink老师的学习笔记——元素的显示与隐藏

1. 元素的显示与隐藏 目的 让一个元素在页面中消失或者显示出来 场景 类似网站广告&#xff0c;当我们点击关闭就不见了&#xff0c;但是我们重新刷新页面&#xff0c;会重新出现&#xff01; 1.1 display 显示&#xff08;重点&#xff09; display 设置或检索对象是否及如…

SpringMVC详解

来源&#xff1a;Sunnier&#xff08;http://www.admin10000.com/document/6436.html&#xff09; 一、SpringMVC基础入门&#xff0c;创建一个HelloWorld程序 1.首先&#xff0c;导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置 12345678910111213141…

html写学生信息管理,vue实现简单学生信息管理案例

学生信息管理#app{margin: 10px;}学号&#xff1a;姓名&#xff1a;搜索姓名关键字&#xff1a;学号姓名添加时间操作{{item.stuNo}}{{item.name}}{{item.cTime | dateFormat}}删除// 自定义自动获取焦点的全局指令Vue.directive(focus,{// 当被绑定的元素插入到 DOM 中时……i…

LeetCode 2135. 统计追加字母可以获得的单词数(位运算+哈希)

文章目录1. 题目2. 解题1. 题目 给你两个下标从 0 开始的字符串数组 startWords 和 targetWords 。每个字符串都仅由 小写英文字母 组成。 对于 targetWords 中的每个字符串&#xff0c;检查是否能够从 startWords 中选出一个字符串&#xff0c;执行一次 转换操作 &#xff0…

五、pink老师的学习笔记——CSS精灵技术(sprite)

5. CSS精灵技术&#xff08;sprite) 重点 5.1 为什么需要精灵技术 图所示为网页的请求原理图&#xff0c;当用户访问一个网站时&#xff0c;需要向服务器发送请求&#xff0c;网页上的每张图像都要经过一次请求才能展现给用户。 然而&#xff0c;一个网页中往往会应用很多小的…