Leetcode 系列 | 反转链表
点击上方“算法猿的成长”,选择“加为星标”
第一时间关注 AI 和 Python 知识
最近会更新一个 leetcode 的刷题系列,每次更新一道题目,并且通过画图辅助介绍自己的解题思路,大家如果有更好的解题思路也欢迎在文末留言,或者公众号后台回复,也可以添加我微信,进行交流,谢谢!
题目 | 206_Reverse_Linked_List
链接 | https://leetcode.com/problems/reverse-linked-list/
题目
给定一个链表,反转并输出结果。
示例
Input: 1->2->3->4->5->NULL
思路
反转一个单链表,首先肯定需要遍历这个单链表,在遍历的时候就希望修改当前结点的 next
指针,指向其前一个结点,因此肯定需要一个保存前一个结点的变量,也就是反转后链表的头部指针。
实现的思路应该是这样的:
首先定义一个
prev
保存前一个结点,curr
保存当前结点,然后还有一个nxt
保存下一个结点,其中prev
就是最终的反转链表的头结点;先让
nxt
保存下一个结点;然后改变
curr
的next
指针,指向前一个结点,即prev
;接着,让
prev = curr
;最后,就是让
curr = nxt
,指向下一个结点重复 2-5 步,直到当前结点为空。
下图展示了上述几个步骤的过程:
实现
方法1
class ListNode:def __init__(self, x):self.val = xself.next = Noneclass Solution:def reverseList(self, head: ListNode) -> ListNode:if not head or not head.next:return headprev,curr = None,headwhile curr:nxt = curr.nextcurr.next = prevprev = currcurr = nxtreturn prev
方法2:更加简洁的版本
class ListNode:def __init__(self, x):self.val = xself.next = Noneclass Solution:def reverseList(self, head: ListNode) -> ListNode:reversed_head = Nonecurrent = headwhile current:reversed_head, reversed_head.next, current = current, reversed_head, current.nextreturn reversed_head
github地址:
https://github.com/ccc013/DataStructe-Algorithms_Study/blob/master/Python/Leetcodes/206_Reverse_Linked_List.py
留言时间
欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!
如果觉得不错,在看、转发就是对小编的一个支持!
Leetcode 系列 | 反转链表相关推荐
- 学长冷月带你怒刷LeetCode之反转链表
本文目录 前言 题目描述 冷月题解 总结一下 前言 链表的操作是数据结构中最基础的算法之一,反转列表也是一道经典的笔试题.很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间 ...
- LeetCode 206. 反转链表 Reverse Linked List
5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...
- LeetCode 206. 反转链表(Reverse Linked List) 16
206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...
- LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历
微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...
- leetcode - 206. 反转链表
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...
- 【Java】LeetCode 206 反转链表
题目 :给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 解题思路 : 1.根据以上代码 ,来进行反转链表的操作: 2.最后实现的效果为: 具体思路: 1.首先判断如果链表为空的话, ...
- 26. Leetcode 206. 反转链表 (链表-反转链表)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表.示例 1:输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2:输入:head = [1,2] 输出:[ ...
- Leetcode 92.反转链表
92.反转链表 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NUL ...
- LeetCode 92 ——反转链表 II
1. 题目 2. 解答 我们需要先找到第 m 个结点及其上一个结点,然后将从 m 到 n 的结点进行反转,最后依次将 m 到 n 反转后的结点和 n 之后的结点放入原链表中即可. 从前往后依次遍历 m ...
最新文章
- 腾讯 JDK 11 正式开源,高性能、太牛逼啦!
- mysql文件头标记_通过文件头准确识别PHP上传的文件类型 ( 一 )
- php去字符串空格,php怎么去掉字符串中空格
- 打造极致体验:字节跳动亿级 DAU 背后的音视频技术最佳实践
- 【机器学习】NMF(非负矩阵分解)
- 聊聊flink的MemoryPool
- 开源项目中经常出现的七种错误
- 如何把密度函数化为标准正态二维分布_概率微课:第三章(22) 二维随机变量及分布函数定义...
- Elmedia Player Pro Mac使用技巧,Elmedia键盘快捷键
- 转:HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)...
- override java field_JAVA方法的重载(overload)和覆盖(override)
- 【AD10】Altium Designer 10导入元件库图文教程
- MCMC(MH算法)
- 手机12306买卧铺下铺技巧_12306网上购下铺技巧(亲历版)
- 怎么把qq音乐flac改成mp3格式
- matlab打靶法求解薛定谔方程,用MATLAB语言解氢原子与类氢离子的定态薛定谔方程...
- Jenkins+Gerrit创建新工程手顺
- 保护环境倡议书500字
- Windows自带虚拟化服务工具Hyper-V学习了解和实操
- 电脑ps计算机磨皮,用PS磨皮详解教程 -电脑资料
热门文章
- 正则表达式以什么开头以什么结尾_股票hk是什么意思,股票st开头是什么意思,新通联股票...
- ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...
- c语言课程结束,【计算机】程序设计——C语言基础秋季学期课程圆满结束
- android gallery自动播放,可循环显示图像的Android Gallery组件
- mysql 搭建日志服务器_一、架构01-搭建日志服务器Rsyslog
- 在MAC OS 下配置python + Flask ,并支持pyCharm编辑器
- React 项目开发问题积累
- GVim中以十六进制方式打开文件
- javascript学习系列(15):数组中的lastIndexOf方法
- [html] 什么是表单域?它有哪些运用场景?