【力扣刷题】206. 反转链表 (简单,我难)
题目:
给你单链表的头节点 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. 反转链表 (简单,我难)相关推荐
- 【力扣刷题笔记】由简到难,模块突破, 你与AC只差一句提示
必会基础部分
- 力扣刷题——单链表系列——第一题:移除链表元素,从此链表初窥门径,神挡杀神~
题目链接:力扣 力扣刷题------>单链表系列 第一种解法:在原链表上进行操作,小红日烧脑版 /*** Definition for singly-linked list.* public c ...
- 《剑指Offer》力扣刷题笔记(03-10)
<剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...
- 力扣刷题记录--哈希表相关题目
当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...
- 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!
开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...
- 力扣刷题——双数之和
很多人去力扣刷题都是数组的第一题,也就是双数之和,相信这也是很多人劝退题目,甚至对自己学过的知识产生了怀疑,这真的是我学完C语言,Java,Python或C++之后能做出来的题目吗?直接劝退了很多人, ...
- 力扣刷题笔记--168. Excel表列名称
题目描述: 简单题 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称. 例如: A -> 1 B -> 2 C -> 3 ... Z -> 2 ...
- 力扣刷题之二叉树的层序遍历
Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...
- 『力扣刷题』5275_找出井字棋的获胜者 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...
- 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...
最新文章
- 网页加速系列(七)、 网页加速之异步加载
- Oracle编程入门经典 第12章 事务处理和并发控制
- Java实现有向图的拓扑排序
- 一个简洁、有趣的无限下拉方案
- 在ASP.NET MVC 中获取当前URL、controller、action
- 【Vegas原创】X connection to localhost:11.0 broken (explicit kill or server shutdown)解决方法...
- 冠榕智能灯光控制协议分析(controller-node) 2
- 作者:陈威,电子科技大学互联网科学中心硕士生。
- Django 第十课 1.【ORM模型】
- UVALive - 7147 (数学)
- Winows Phone 7 不温不火学习之《音乐播放示例》
- pom文件无法加载ojdbc14-10.2.0.4.0.jar
- louvain算法python_【转载】LOUVAIN算法
- Windows 删除系统恢复分区
- 《面试》游戏开发常用面试问题以及答案
- 计算机键盘怎样做除法,电脑键盘除法是哪个键?
- autoCAD恐吓式销售_恐吓式软文的例子 恐吓式软文营销案例分享
- (P57-P61)正则表达式
- 原生app登录 后台方案(token方案)
- LC Uniboot相比于常规的LC光纤连接器有什么特点?