LeetCode怎样反转链表
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"LeetCode怎样反转链表",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"LeetCode怎样反转链表"这篇文章吧。题目描述反转
千家信息网最后更新 2026年11月01日LeetCode怎样反转链表
这篇文章主要为大家展示了"LeetCode怎样反转链表",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"LeetCode怎样反转链表"这篇文章吧。
题目描述
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
解题思路
链表一般都是用迭代或是递归法来解决,而且一般都是构造双指针、三指针,比如反转链表或是DP动态规划。
双指针迭代
我们可以申请两个指针,第一个指针叫 pre,最初是指向 null 的。
第二个指针 cur 指向 head,然后不断遍历 cur。
每次迭代到 cur,都将 cur 的 next 指向 pre,然后 pre 和 cur 前进一位。
都迭代完了(cur 变成 null 了),pre 就是最后一个节点了。
java实现
class Solution {
public ListNode reverseList(ListNode head) {
//申请结点,pre和 cur,pre指向null
ListNode pre = null;
ListNode cur = head;
ListNode tmp = null;
while(cur!=null) {
//记录当前节点的下一个节点
tmp = cur.next;
//然后将当前节点指向pre
cur.next = pre;
//pre和cur节点都前进一位
pre = cur;
cur = tmp;
}
return pre;
}
}
Python实现
class Solution(object):
def reverseList(self, head):
if not head or not head.next:
return head
l = head
r = head.next
remain = r.next
l.next = None
while r:
r.next = l
l = r
r = remain
if remain:
remain = remain.next
return l
递归实现:
递归的两个条件:
终止条件是当前节点或者下一个节点==null 在函数内部,改变节点的指向,也就是 head 的下一个节点指向 head 递归函数那句 head.next.next = head很不好理解,其实就是 head 的下一个节点指向head。
递归函数中每次返回的 cur 其实只最后一个节点,在递归函数内部,改变的是当前节点的指向。
class Solution {
public ListNode reverseList(ListNode head) {
//递归终止条件是当前为空,或者下一个节点为空
if(head==null || head.next==null) {
return head;
}
//这里的cur就是最后一个节点
ListNode cur = reverseList(head.next);
//如果链表是 1->2->3->4->5,那么此时的cur就是5
//而head是4,head的下一个是5,下下一个是空
//所以head.next.next 就是5->4
head.next.next = head;
//防止链表循环,需要将head.next设置为空
head.next = null;
//每层递归函数都返回cur,也就是最后一个节点
return cur;
}
}
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head or head.next == None: return head
res = self.reverseList(head.next)
head.next.next = head
head.next = None
return res
以上是"LeetCode怎样反转链表"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
节点
指向
递归
指针
函数
就是
迭代
内容
条件
篇文章
两个
也就是
学习
帮助
不好
不断
动态
完了
思路
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
广东万易互联网科技有限公司惠州分公司
新华互联网科技学院
金融科技还是互联网
互联网 科技
西安互联网科技
互联网科技logo设计
广州善班互联网科技
老年人脱离互联网科技的作文
科技与互联网的利与弊
团飞科技与伯堂互联网服务平台
移动互联网科技股
互联网企业和科技型企业
想开互联网科技公司怎么样
互联网科技创新的路径
佛山市拉法互联网科技有限公司
为客找房互联网科技公司怎么样
国大互联网教育科技有限公司薪资
互联网科技博主张洲
互联网科技创业有什么好项目
互联网高科技
万易互联网科技有限公司
金融科技和互联网金融
恒生科技互联网指数分析
广州慧亚互联网科技怎么样
央行互联网金融科技公司
长沙互联网科技
福建互联网展示科技馆设计
陕西彩京云互联网科技有限公司
互联网科技创业计划的风险分析