重排链表,剑指offerII 26,力扣 120

目录

力扣题目地址:

题目:

那我们直接看题解吧:

解题方法:

难度分析:

审题目+事例+提示:

解题分析:

解题思路:

解题补充:


力扣题目地址:

143. 重排链表 - 力扣(LeetCode)

难度:中等

今天刷重排链表,大家有兴趣可以点上看看题目要求,试着做一下。

题目:

给定一个单链表 L 的头节点 head ,单链表 L 表示为:

 L0 → L1 → … → Ln-1 → Ln 
请将其重新排列后变为:

L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

那我们直接看题解吧:

解题方法:

方法1、线性表+双指针

方法2、寻找链表中点+链表逆序+链表合并

难度分析:

解题方法需要综合使用,有一定难度

审题目+事例+提示:

·不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

·不用进行return返回修改后的链表

解题分析:

由于链表不支持下标访问,所以我们无法随机访问链表中任意位置的元素。

因此比较容易想到的一个方法是,我们利用线性表存储该链表,然后利用线性表可以下标访问的特点,直接按顺序访问指定元素,重建该链表即可。

解题思路:

1、判断链表是否为空,空则直接return(即链表无意义,结束方法)

2、创建线性表list,创建节点node,初始化指向链表head

3、循环遍历链表,依次将链表节点添加到线性表中

4、创建双指针并初始化left=0,right=list.size()-1

5、利用while循环,根据题目规则对链表进行移动排序(移动节点主要改变指针指向即可)

6、最后,让最后一个节点指针指向null即可

代码实现:

class Solution {public void reorderList(ListNode head) {if (head == null) {  //进行判空操作return;}//创建线性表,对象存储类型为ListNodeList<ListNode> list = new ArrayList<ListNode>();ListNode node = head;    //链表创建节点,指向headwhile (node != null) {    list.add(node);node = node.next;}int i = 0, j = list.size() - 1; //创建双指针while (i < j) {list.get(i).next = list.get(j);i++;if (i == j) {        //如果指针相等则退出循环break;}list.get(j).next = list.get(i);j--;}list.get(i).next = null;  //最后指针指向null}
}
解题补充:

实际上,相当于定义一个ArrayList的顺序表,存储对象类型为ListNode类型,先把链表的结点都填充到顺序表中,然后利用顺序表的get()方法获取结点,然后对结点的指针进行修改,最终修改的还是链表,只是利用了顺序表的get()方法来快速定位到目标结点。

代码实现(方法2):

class Solution {public void reorderList(ListNode head) {if (head == null) {return;}ListNode mid = middleNode(head);ListNode l1 = head;ListNode l2 = mid.next;mid.next = null;l2 = reverseList(l2);mergeList(l1, l2);}public ListNode middleNode(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast.next != null && fast.next.next != null) {slow = slow.next;fast = fast.next.next;}return slow;}public ListNode reverseList(ListNode head) {ListNode prev = null;ListNode curr = head;while (curr != null) {ListNode nextTemp = curr.next;curr.next = prev;prev = curr;curr = nextTemp;}return prev;}public void mergeList(ListNode l1, ListNode l2) {ListNode l1_tmp;ListNode l2_tmp;while (l1 != null && l2 != null) {l1_tmp = l1.next;l2_tmp = l2.next;l1.next = l2;l1 = l1_tmp;l2.next = l1;l2 = l2_tmp;}}
}

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

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

相关文章

基于Django+Tensorflow卷积神经网络鸟类识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介系统概述系统功能核心技术系统架构系统优势 二、功能三、系统四. 总结  总结 一项目简介 介绍一个基于DjangoTensorflow卷积神经网络鸟类识别系统是一个非…

[ABC261E] Many Operations(dp,位运算,打表)

[ABC261E] Many Operations - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) Problem Statement We have a variable X and N kinds of operations that change the value of X. Operation i is represented as a pair of integers (Ti​,Ai​), and is the following operati…

多目标水母搜索算法(MOJS)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、多目标水母搜索算法MOJS 多目标水母搜索算法&#xff08;Multi-Objective Jellyfish Search algorithm&#xff0c;MOJS&#xff09;由Jui-Sheng Chou等…

Verilog 入门(一)(Verilog 简介)

文章目录 什么是 Verilog HDL&#xff1f;Verilog 主要能力模块时延数据流描述方式 什么是 Verilog HDL&#xff1f; Verilog HDL是一种硬件描述语言&#xff0c;用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和…

景联文科技加入中国人工智能产业联盟(AIIA)数据委员会

近日&#xff0c;景联文科技加入中国人工智能产业联盟&#xff08;AIIA&#xff09;数据委员会&#xff0c;成为委员会成员单位。 中国人工智能产业发展联盟&#xff08;简称AIIA&#xff09;是在国家发改委、科技部、工信部、网信办指导下&#xff0c;由中国信息通信研究院等单…

docker stop停止一个容器

学习停止一个正在运行的容器&#xff0c;要求学习者参照示例将正在运行的名为firstContainer的容器停止。 相关知识 使用docker stop停止一个容器 docker stop可以用来终止一个正在运行的容器。它的命令格式如下&#xff1a; docker stop [OPTIONS] Container [Container .…

基于springboot家具商城系统

基于springboot家具商城系统 摘要 这个Spring Boot家具商城系统旨在通过现代化的Web应用程序技术提供一个全功能的电子商务平台。系统的核心实体是家具商品&#xff0c;通过RESTful API控制器提供对商品的增删改查等操作。这个系统使用了Spring Boot框架&#xff0c;借助其简便…

nn.TransformerEncoder的输出为NaN值的原因及解决方法

问题描述&#xff1a; 当使用nn.TransformerEncoder时&#xff0c;即如下情况&#xff1a; 实例化一个TransformerEncoder self.encoder_layer nn.TransformerEncoderLayer(d_modelencoder_in_dim, nheadencoder_head,dim_feedforwardencoder_ffnn_dim,batch_firstbatch_fir…

关于团队管理的一些思考

1、团队&#xff1a;为什么需要团队&#xff0c;一个人或者一群人不行吗&#xff0c;当一个项目需要的能力仅靠个人无法满足时&#xff0c;这时候就需要团队来完成&#xff0c;一群人和一个团队的主要区别就是团队有一个共同的目标&#xff0c;团队成员可以发挥自己的优势一起完…

06 C++中变量的作用域

系列文章目录 06 C中变量的作用域 目录 系列文章目录 文章目录 前言 一、局部变量 二、全局变量 三、块作用域变量 总结 前言 C中变量的作用域指的是变量可以被访问的范围&#xff0c;即变量在程序中存在的有效范围。不同作用域的变量具有不同的可见性和生命周期。 在…

Mac单独修改应用语言

方法1: 方法2: defaults write com.microsoft.Excel AppleLanguages ("zh-cn") defaults write com.microsoft.Word AppleLanguages ("zh-cn")参考&#xff1a;https://www.zhihu.com/question/24976020

红队攻防实战系列一之Cobalt Strike

他日若遂凌云志&#xff0c;敢笑黄巢不丈夫 本文首发于先知社区&#xff0c;原创作者即是本人 前言 在红队攻防中&#xff0c;需要我们拥有综合能力&#xff0c;不仅仅是web渗透的漏洞挖掘与利用&#xff0c;边界突破的方式有很多种&#xff0c;当然这需要我们拥有很强的意识…

【LeetCode】101. 对称二叉树

101. 对称二叉树 难度&#xff1a;简单 题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#…

图书管理系统源码,图书管理系统开发,图书借阅系统源码配置和运行图解源码已附加

目录 配置简介和软件条件 数据库附件配置 vs应用程序web.config配置数据库链接字符串 数据库文件脚本代码 配置简介和软件条件 所需要的软件是Vs2017以上数据库是Sqlserver2012以上&#xff0c;如果数据库附件不了可以使用数据库脚本附件数据库脚本会在文章末尾写出来。可以…

CG 运算符 流程控制

运算符 算数运算符 注意&#xff1a;取余运算只能作用于整数 加 减- 乘* 除/ 取余% 自增 自减--三目运算符 条件 &#xff1f;条件真&#xff1a;条件假 例如&#xff1a;fixed a 4>5? 4:5; 逻辑运算符 && 逻辑与 || 逻辑或 注意&#xff1a;CG中的逻辑运算符…

ArkTS-页面转场动画

页面转场动画 在全局pageTransition方法内配置页面入场和页面退场时的自定义转场动效 两个页面间发生跳转&#xff0c;一个页面消失&#xff0c;另一个页面出现&#xff0c;这时可以配置各自页面的页面转场参数实现自定义的页面转场效果。页面转场效果写在pageTransition函数中…

【Python】获取ip

要使用Python获取IP地址&#xff0c;可以使用socket库中的gethostname()函数和gethostbyname()函数。 import socketdef get_ip_address():hostname socket.gethostname()ip_address socket.gethostbyname(hostname)return ip_addressip get_ip_address() print("IP地…

【BUG合集】(一)①数据库存1/0,请求结果返回true和false;②sql查数据库能查,但mybatis查为空;③data64图片存储为异常;

前言 最近&#xff0c;在工作上接手的任务中&#xff0c;各种 bug 问题出现&#xff0c;在解决的同时也可以记录一下。因此&#xff0c;觉得可以出个记录 bug 合集。方便后来者碰到类似情况&#xff0c;可以作为一个参考进行解决。 文章题目就包含当前文章内容中所遇到的三个 b…

用行云管家实现IT统一运维管理,提高运维效率

随着公司业务的不断壮大&#xff0c;需要用到的IT系统也越来越多&#xff0c;使用起来耗时耗力。因此实现IT统一运维管理已成为提高运维效率、降低成本、优化资源配置的重要途径。这里我们小编告诉您&#xff0c;用行云管家实现IT统一运维管理&#xff0c;提高运维效率&#xf…

目标检测——R-CNN算法解读

论文&#xff1a;Rich feature hierarchies for accurate object detection and semantic segmentation 作者&#xff1a;Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik 链接&#xff1a;https://arxiv.org/abs/1311.2524 代码&#xff1a;http://www.cs.berke…