点击上方“算法猿的成长”,选择“加为星标”

第一时间关注 AI 和 Python 知识

最近会更新一个 leetcode 的刷题系列,每次更新一道题目,并且通过画图辅助介绍自己的解题思路,大家如果有更好的解题思路也欢迎在文末留言,或者公众号后台回复,也可以添加我微信,进行交流,谢谢!

题目 | 206_Reverse_Linked_List

链接 | https://leetcode.com/problems/reverse-linked-list/

题目

给定一个链表,反转并输出结果。

示例

Input: 1->2->3->4->5->NULL

思路

反转一个单链表,首先肯定需要遍历这个单链表,在遍历的时候就希望修改当前结点的 next 指针,指向其前一个结点,因此肯定需要一个保存前一个结点的变量,也就是反转后链表的头部指针。

实现的思路应该是这样的:

  1. 首先定义一个 prev 保存前一个结点,curr 保存当前结点,然后还有一个 nxt 保存下一个结点,其中 prev 就是最终的反转链表的头结点;

  2. 先让 nxt 保存下一个结点;

  3. 然后改变 curr 的 next 指针,指向前一个结点,即 prev ;

  4. 接着,让 prev = curr ;

  5. 最后,就是让 curr = nxt,指向下一个结点

  6. 重复 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 系列 | 反转链表相关推荐

  1. 学长冷月带你怒刷LeetCode之反转链表

    本文目录 前言 题目描述 冷月题解 总结一下 前言 链表的操作是数据结构中最基础的算法之一,反转列表也是一道经典的笔试题.很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间 ...

  2. LeetCode 206. 反转链表 Reverse Linked List

    5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...

  3. LeetCode 206. 反转链表(Reverse Linked List) 16

    206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...

  4. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  5. leetcode - 206. 反转链表

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...

  6. 【Java】LeetCode 206 反转链表

    题目 :给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 解题思路 : 1.根据以上代码 ,来进行反转链表的操作: 2.最后实现的效果为: 具体思路: 1.首先判断如果链表为空的话, ...

  7. 26. Leetcode 206. 反转链表 (链表-反转链表)

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表.示例 1:输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2:输入:head = [1,2] 输出:[ ...

  8. Leetcode 92.反转链表

    92.反转链表 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NUL ...

  9. LeetCode 92 ——反转链表 II

    1. 题目 2. 解答 我们需要先找到第 m 个结点及其上一个结点,然后将从 m 到 n 的结点进行反转,最后依次将 m 到 n 反转后的结点和 n 之后的结点放入原链表中即可. 从前往后依次遍历 m ...

最新文章

  1. 腾讯 JDK 11 正式开源,高性能、太牛逼啦!
  2. mysql文件头标记_通过文件头准确识别PHP上传的文件类型 ( 一 )
  3. php去字符串空格,php怎么去掉字符串中空格
  4. 打造极致体验:字节跳动亿级 DAU 背后的音视频技术最佳实践
  5. 【机器学习】NMF(非负矩阵分解)
  6. 聊聊flink的MemoryPool
  7. 开源项目中经常出现的七种错误
  8. 如何把密度函数化为标准正态二维分布_概率微课:第三章(22) 二维随机变量及分布函数定义...
  9. Elmedia Player Pro Mac使用技巧,Elmedia键盘快捷键
  10. 转:HashMap实现原理分析(面试问题:两个hashcode相同 的对象怎么存入hashmap的)...
  11. override java field_JAVA方法的重载(overload)和覆盖(override)
  12. 【AD10】Altium Designer 10导入元件库图文教程
  13. MCMC(MH算法)
  14. 手机12306买卧铺下铺技巧_12306网上购下铺技巧(亲历版)
  15. 怎么把qq音乐flac改成mp3格式
  16. matlab打靶法求解薛定谔方程,用MATLAB语言解氢原子与类氢离子的定态薛定谔方程...
  17. Jenkins+Gerrit创建新工程手顺
  18. 保护环境倡议书500字
  19. Windows自带虚拟化服务工具Hyper-V学习了解和实操
  20. 电脑ps计算机磨皮,用PS磨皮详解教程 -电脑资料

热门文章

  1. 正则表达式以什么开头以什么结尾_股票hk是什么意思,股票st开头是什么意思,新通联股票...
  2. ajax登录验证的原理,ajax用户登录验证-get和post提交方式,与工作原理—2018-8-15...
  3. c语言课程结束,【计算机】程序设计——C语言基础秋季学期课程圆满结束
  4. android gallery自动播放,可循环显示图像的Android Gallery组件
  5. mysql 搭建日志服务器_一、架构01-搭建日志服务器Rsyslog
  6. 在MAC OS 下配置python + Flask ,并支持pyCharm编辑器
  7. React 项目开发问题积累
  8. GVim中以十六进制方式打开文件
  9. javascript学习系列(15):数组中的lastIndexOf方法
  10. [html] 什么是表单域?它有哪些运用场景?