反转链表
题目
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
解题思路
- 迭代。利用双指针;
- 定义两个指针,一个
pre
指向 None,一个cur
指向链表头部; - 遍历链表,将当前节点的
next
指针指向pre
,同时pre
和cur
指针都往前进一位(这里注意元素保存) - 当
cur
为None,迭代完毕,pre
此时指向链表头部,返回。
代码实现
# 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:
'''反转链表
Args:
head: 链表
Returns:
返回反转后的链表
'''
# 定义两个指针
# pre 指向 None,cur 指向原链表头部
pre = None
cur = head
# cur 为 None,迭代结束
while cur:
# 这里注意引用更改,节点的存储
# 下面的代码相当于
# 存储节点值
# tmp = cur.next
# 将 cur 的 next 指向 pre
# cur.next = pre
# 移动两个指针
# pre = cur
# cur = tmp
cur.next, pre, cur = pre, cur, cur.next
# 返回反转后的链表
return pre
实现效果
以上就是 LeetCode 题目《反转链表》的解题过程及结果。
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦