题目:

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

解题思路:

首先生成一个空列表ar,遍历链表的同时,存入该列表ar,同时指针后移;遍历完后,ar已正序包含链表所有元素,再一次使用list.pop()函数,使每个元素从尾部一个个肆放装进新的列表pr,此时pr则与链表元素顺序反过来。

解决方案(python)

#迭代法
prev=None
cur=head
while(cur!=None):next=cur.next   #用来保存cur指针(保证cur能正常向后移)cur.next=prev    #将cur指向前一个元素(保证最后cur指向空时,pre能往前元素走)prev=cur         #pre往后移动一个元素cur=next        #cur向后移动一个元素
return prev

解法二:递归法

思路2:

判断如果head或head.next为None时,返回head

一直往后递:即p=self.reverseList(head.next),直到递到head为最后一个元素时,head.next满足判断则返回最后一个元素,将head.next指向head(即head.next.next=head),即可将元素往前归,归完一个元素但也需要将head.next=None,使得元素往前归的同时,保证下一个元素为空,才能正常返回元素。

if (head is None) or (head.next is None):return head
p=self.reverseList(head.next)
head.next.next=head      #表示将head.next的指针指向head,让head位置往前一个元素移动
head.next=None           #保证head往前移动过程中,后面一个元素为None,才能满足上面的判断句
return p

知识点:

知识1:python中只有None,没有Null

判断语句if (head is None)or (head.next is None)才是正确的,None属于一个空类型,不是布尔型。不能使用if(head)

print(type(None))
print(None)#输出:
#<class 'NoneType'>
#None

知识2:head.next.next=head     #表示将head.next的指针指向head

该题中当前一次递归(此时递归head.next为最后一个元素)完成后,第一轮让head.next.next=head,下一个递归函数括号中的head.next即为倒数第二个元素。才符合逻辑

知识3:

p=self.reverseList(head.next)    递归函数使用方法

此处应该是self.函数名;这个需要根据上面给出的参数名来看。

【力扣刷题】206. 反转链表 (简单,我难)相关推荐

  1. 【力扣刷题笔记】由简到难,模块突破, 你与AC只差一句提示

    必会基础部分

  2. 力扣刷题——单链表系列——第一题:移除链表元素,从此链表初窥门径,神挡杀神~

    题目链接:力扣 力扣刷题------>单链表系列 第一种解法:在原链表上进行操作,小红日烧脑版 /*** Definition for singly-linked list.* public c ...

  3. 《剑指Offer》力扣刷题笔记(03-10)

    <剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...

  4. 力扣刷题记录--哈希表相关题目

    当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...

  5. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  6. 力扣刷题——双数之和

    很多人去力扣刷题都是数组的第一题,也就是双数之和,相信这也是很多人劝退题目,甚至对自己学过的知识产生了怀疑,这真的是我学完C语言,Java,Python或C++之后能做出来的题目吗?直接劝退了很多人, ...

  7. 力扣刷题笔记--168. Excel表列名称

    题目描述: 简单题 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称. 例如: A -> 1 B -> 2 C -> 3 ... Z -> 2 ...

  8. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  9. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

  10. 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...

最新文章

  1. 网页加速系列(七)、 网页加速之异步加载
  2. Oracle编程入门经典 第12章 事务处理和并发控制
  3. Java实现有向图的拓扑排序
  4. 一个简洁、有趣的无限下拉方案
  5. 在ASP.NET MVC 中获取当前URL、controller、action
  6. 【Vegas原创】X connection to localhost:11.0 broken (explicit kill or server shutdown)解决方法...
  7. 冠榕智能灯光控制协议分析(controller-node) 2
  8. 作者:陈威,电子科技大学互联网科学中心硕士生。
  9. Django 第十课 1.【ORM模型】
  10. UVALive - 7147 (数学)
  11. Winows Phone 7 不温不火学习之《音乐播放示例》
  12. pom文件无法加载ojdbc14-10.2.0.4.0.jar
  13. louvain算法python_【转载】LOUVAIN算法
  14. Windows 删除系统恢复分区
  15. 《面试》游戏开发常用面试问题以及答案
  16. 计算机键盘怎样做除法,电脑键盘除法是哪个键?
  17. autoCAD恐吓式销售_恐吓式软文的例子 恐吓式软文营销案例分享
  18. (P57-P61)正则表达式
  19. 原生app登录 后台方案(token方案)
  20. LC Uniboot相比于常规的LC光纤连接器有什么特点?

热门文章

  1. 有关飞行的42经典电影,不看会后悔哦!
  2. 用AI监控员工制作披萨,这样的“丧心病狂”你接受吗
  3. 各种Json技术的对比
  4. 三面蚂蚁金服成功拿到offer,鸿蒙教程来袭
  5. 社交应用如何防范“虚假流量”?安全检测服务帮你快速识别
  6. 在函数后面加const
  7. java的向下转型_浅谈Java向下转型的意义
  8. 廖雪峰老师git学习笔记(2)
  9. EXCEL 隔行复制,粘贴时仍为隔行
  10. 微信公众号 java发送消息_微信公众号发送消息模板(java)