Leetcode 系列 | 反转链表

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

第一时间关注 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 步,直到当前结点为空。

下图展示了上述几个步骤的过程:

640?wx_fmt=png
640?wx_fmt=png

实现

方法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


留言时间

640?wx_fmt=png

欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!

640?wx_fmt=png

如果觉得不错,在看、转发就是对小编的一个支持!

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

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

相关文章

Android UI开发第二十九篇——Android中五种常用的menu(菜单)

Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu。 1、左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新。最早使用左右推出菜单的,听说是Facebook,我不确定消息的真实…

深度学习的一些经验总结和建议| To do v.s Not To Do

关注&置顶“Charlotte数据挖掘”每日9:00,干货速递!昨天看到几篇不同的文章写关于机器学习的to do & not to do,有些观点赞同,有些不赞同,是现在算法岗位这么热门,已经不像几年前一样,可…

PyTorch系列 | 快速入门迁移学习

点击上方“算法猿的成长”,选择“加为星标”第一时间关注 AI 和 Python 知识图片来源:Pexels,作者:Arthur Ogleznev2019 年第 68 篇文章,总第 92 篇文章本文大约 6800 字,建议收藏阅读原题 | TRANSFER LEAR…

AI研发工程师成长指南

AI研发工程师成长指南本文为数据茶水间群友原创,经授权在本公众号发表。关于作者:Japson。某人工智能公司AI平台研发工程师,专注于AI工程化及场景落地。持续学习中,期望与大家多多交流技术以及职业规划。0x00 前言首先&#xff0c…

进程和线程(上)

点击上方“算法猿的成长”,选择“加为星标”第一时间关注 AI 和 Python 知识2019 年第 70 篇文章,总第 94 篇文章本文大约 6000 字,阅读大约需要 15 分钟最近会开始继续 Python 的进阶系列文章,这是该系列的第一篇文章&#xff0c…

你有哪些deep learning(rnn、cnn)调参的经验?

点击上方“算法猿的成长”,选择“加为星标”第一时间关注 AI 和 Python 知识来源:知乎问题深度学习中调参其实是一个比较重要的技巧,但很多时候都需要多尝试多积累经验,因此算法工程师也被调侃为调参工程师。这里分享来自知乎上的…

A+B for Matrices 及 C++ transform的用法

题目大意&#xff1a;给定两个矩阵&#xff0c;矩阵的最大大小是M*N&#xff08;小于等于10&#xff09;&#xff0c;矩阵元素的值的绝对值小于等于100&#xff0c;求矩阵相加后全0的行以及列数。 1 #include<iostream>2 using namespace std;3 #define N 104 5 int main…

进程和线程(下)

点击上方“算法猿的成长”&#xff0c;选择“加为星标”第一时间关注 AI 和 Python 知识2019 年第 71 篇文章&#xff0c;总第 95 篇文章本文大约 8000 字&#xff0c;建议收藏阅读上一篇文章介绍了进程和线程的基本概念&#xff0c;以及多进程如何实现&#xff0c;本文则介绍下…

8月总结抽奖

1首先是小小总结下 8 月发文的情况&#xff0c;总共推文时间是 21 天&#xff0c;原创文章有 9 篇&#xff0c;分别如下&#xff1a;Jupyter 进阶教程PyTorch 系列 | 数据加载和预处理教程PyTorch系列 | 如何加快你的模型训练速度呢&#xff1f;Leetcode 系列 | 反转链表PyTorc…

【文件系统】浅解释FAT32

了解完linux下的文件系统之后&#xff0c;顺便对FAT32也研究一下。 假如一个FAT32表如下所示。 文件的簇应该保留在目录中&#xff0c;根据此簇&#xff0c;应该能得到一个块。 要找到文件的下一块&#xff0c;就要根据簇在FAT中寻找&#xff0c;所以FAT中存储的不是本簇的簇号…

全网首发!2020年AI、CV、NLP顶会最全时间表!

点上方蓝字计算机视觉联盟获取更多干货在右上方 设为星标 ★&#xff0c;与你不见不散编辑&#xff1a;Sophia计算机视觉联盟 原创总结 | 公众号 CVLianMeng联盟花费一周对2020年顶会时间进行了总结&#xff01;2020 AI、CV、NLP顶会时间表&#xff0c;包含会议举办的时间、…