LeetCode 206. 反转链表 思考分析

题目
反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

迭代+双指针

从某公众号(代码随想录)搬过来的gif图:看了能很好地理解转置的过程
在这里插入图片描述

class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* pre = nullptr;ListNode* cur = head;ListNode* tmp;while(cur != NULL){//临时结点,暂存当前节点的下一个节点,用于后移tmp = cur->next;//当前节点指向它前面的节点(完成转置)cur->next = pre;//前指针后移pre = cur;//当前指针后移cur = tmp;}return  pre;}
};

在这里插入图片描述

递归解

递归思路:
在这里插入图片描述
递归动态图:
在这里插入图片描述
主要思路:
head 的下一个节点指向head
具体实现步骤过程见:
https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/

递归模板;

class Solution {
public:ListNode* reverseList(ListNode* head) {//终止条件://终止条件是当前节点或者下一个节点==null//终止条件为何是这个?第一个head是null,防止一开始传入的就是空指针//若一开始传入的就是空指针,则会返回空指针//若一开始传入的是head+null,则会直接返回head//若一开始传入的是head+node2+...+null,则正常递归返回if(head ==NULL || head->next == NULL){return head;}//调用递归+逻辑//在函数内部,改变节点的指向,也就是 head 的下一个节点指向 head 递归函数ListNode* cur = reverseList(head->next);head->next->next = head;//防止链表循环,需要将head.next设置为空,此时原来的head变为尾部head->next = NULL;return cur;}
};

在这里插入图片描述

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

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

相关文章

怎样看虚拟主机的服务器,虚拟主机怎么查看服务器类型

虚拟主机怎么查看服务器类型 内容精选换一换使用华为云提供的公共镜像制作私有镜像时,您需先购买云主机等云资源时镜像选择公共镜像、云服务器类型建议统一选择“s3 (通用计算型)”,在云主机安装部署完商品,然后参照以下方式进行私有镜像制作…

Anaconda自带Python编译器Jupyter Notebook显示代码行数

ESC:进入命令行模式;按下H即可显示各种快捷键信息 Enter:进入编辑模式 方法一:命令方法 一、点击代码段,按ESC,使代码段显示蓝色,进入命令行模式 二、按下ShiftL,显示代码行数 方法…

(转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)

http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不同的游戏对象身上,他们各自都在执行自己的生命周期感觉像是多线程&…

【C、C++基础】什么时候用 “.” 什么时候用“->”(3个实例搞懂)

从堆栈的角度来说: 从堆栈的角度来说: 对象放在堆上,就要用指针,也就是对象指针->函数; 放在栈上,就对象.函数 那么如何判断对象放在堆上还是栈上? 从我的另一篇笔记【C grammar】C简化内存模型可知&am…

三、Numpy数组操作

一、对图片各个像素点的像素值进行操作 image.shape[0]:image图像的height image.shape[1]:image图像的width image.shape[2]:image图像的channels import cv2 import numpy as npdef access_pixels(image):print(image.shape)height imag…

二叉树笔记(深度遍历与广度遍历+13道leetcode题目(深度3道、广度10道))

本文章为结合leetcode题目以及公众号“代码随想录”的文章所做的笔记! 感觉代码随想录的题目整理真的很好,比自己盲目刷题好很多。 目录1、二叉树小记1、满二叉树与完全二叉树2、二叉搜索树3、平衡二叉搜索树AVL4、二叉树存储方式5、二叉树遍历方式6、二…

ZZ的计算器

Problem Description ZZ自从上大学以来,脑容量就是以SB计算的,这个吃货竟然连算术运算也不会了,可是当今的计算机可是非常强大的,作为ACMer, 几个简单的算术又算得了什么呢?可是该怎么做呢?ZZ只…

对视频中的特征颜色物体(青色水杯)进行跟踪

方法一:目标物体白色,其余黑色 import cv2 import numpy as npdef extrace_object():capture cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame capture.read()if retFalse:breakhsv cv2.cvtColor(frame…

Android实现号码归属地查询

我们通过发送XML访问 WebService就可以实现号码的归属地查询,我们可以使用代理服务器提供的XML的格式进行设置,然后请求提交给服务器,服务器根据请求就会返回给一个XML,XML中就封装了我们想要获取的数据。 发送XML 1.通过URL封装路…

如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter...

一、如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,WPF中的DataGrid 不同于Windows Forms中的 DataGridView。 在DataGrid的Items集合中,DataGridRow…

【C++ grammar】常量、指针、Usage of using, typedef, and #define

目录1、常量 (Constant)2、指针(Pointer)3、Usage of using, typedef, and #define1、常量 (Constant) 常量是程序中一块数据,这个数据一旦声明后就不能被修改了。 如果这块数据有一个名字&am…

四、色彩空间

一、色彩空间 1、什么是色彩空间? 色彩空间是定义的颜色范围。 2、常见的色彩空间有哪些? ①RGB ②HSV 在OpenCV中,Hue的值为0~180,之所以不是360是因为,8位存不下,故进行归一化操作,使得H…

FIFA的完整形式是什么?

国际足联:国际足球联合会 (FIFA: Federation Internationale de Football Association) FIFA is an abbreviation of the "Federation Internationale de Football Association" in French. It is also known as the International Federation of Associa…

【C++ grammar】重载、内联、变量作用域、带默认参数的函数

目录1、变量的作用域1. 变量的作用域分类2. Unary Scope Resolution (一元作用域解析运算符)2、重载函数3、带有默认参数值的函数4、重载函数 VS 带有默认参数值的函数5、内联函数(Inline Function)1. 普通函数的优缺点2. 使用内联函数3. 定义内联函数4.…

五、像素运算

一、相关概念 1、算术运算 Ⅰ加减乘除 Ⅱ调节亮度 Ⅲ调整对比度 2、逻辑运算 Ⅰ与或非 Ⅱ遮罩层控制 二、图像算术运算(加减乘除均值方差) 其中图像的加减乘除需要保证两张图像的大小相同 import cv2 import numpy as npdef add(src1,src2):dst cv2.add(src1,src2)cv2.im…

Chaikin Curve(球面插值)

在两条折线间完成平滑的过渡是 用画布做UI 或者做类似地图编辑器一类的工作的 很常见的任务。 怎么样化方为圆是决定工作效率的很重要的因素。(当需要编辑的曲线多起来, 复杂起来的时候,这会是件相当繁重的工作) 最容易想到的莫非…

六、ROI和泛洪填充

一、ROI ROI:region of interest,即感兴趣区域。 一般主要通过numpy来获取ROI 将某区域转变为灰色图片再覆盖原图像 import cv2 import numpy as npsrc cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg") cv2.imshow(&quo…

django 静态数据_如何在Django中使用静态数据?

django 静态数据Static Data means those data items that we cannot want to change, we want to use them as it is like audio, video, images, files etc. 静态数据是指我们不想更改的数据项,我们想像音频,视频,图像,文件等那…

Leetcode226. 翻转二叉树(递归、迭代、层序三种解法)

目录题目1、层序法:2、递归法:1、先序遍历(中左右)2、后序遍历(左右中)3、递归中序遍历为什么不行(左中右)3、迭代法:1、先序遍历2、中序遍历3、后序遍历为什么迭代法的中…

一款jQuery立体感动态下拉导航菜单特效

一款jQuery立体感动态下拉导航菜单特效,鼠标经过,在菜单栏上方下拉出一个背景图片,效果十分不错的一款jquery特效。 对IE6都是兼容的,希望大家好好研究研究。 适用浏览器:IE6、IE7、IE8、360、FireFox、Chrome、Safari、Opera、傲…