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,有些观点赞同,有些不赞同,是现在算法岗位这么热门,已经不像几年前一样,可…

cocos2d-x 学习资料(很全)

cocos2d-x quick-cocos2d-x官网 http://cn.quick-x.com/?p235 TexturePacker 不错的图片组合工具(教程) http://hi.baidu.com/longfan365/item/5f2ac24478576ea961d7b9d3 cocosbuilder教程 (杨世玲的博客) http://young40.github…

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

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

poj 2486 树形dp

思路:这题是裸的树形dp。dp[i][j]表示第i个节点花费j步并且从子节点返回,能得到的最大苹果数;nback[i[j]表示第i个节点花费j步并且进入某个子节点不返回,能得到的最大苹果数。那么我们就能得到动态方程: 根节点为u,子节…

AI研发工程师成长指南

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

用cocos2dx实现模态对话框

ui部分使用了cocoStudio,注意这里没有实现怎么屏蔽其他的输入事件,其他的文档已经太多了,我这里使用的cocoStudio的控件自己的特性。 这里强烈推荐一下cocoStudio,虽然现在还有不完善的地方,但是我个人感觉做的很不错了…

进程和线程(上)

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

ZOJ 1057 Undercut(简单模拟)

Undercut 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId57 题目大意:a card game,two player,每个player有n张牌,按顺序出牌,如果2张牌的点数相等,2个player都不得分;如果2张牌点…

你有哪些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;本文则介绍下…

SPOJ MYQ10 (数位DP)

题意 询问区间[a,b]中的Mirror Number的个数&#xff0c;其中Mirror Number是指把它横着翻转后还能表示同样的数字。 思路 注意这个可不是回文数。。除了0,1,8&#xff0c;别的数字翻转过后就不是数字了。所以策略就是记忆化按位搜索&#xff0c;每位只搜0,1,8&#xff0c;最后…