反转链表
题目
反转一个单链表。
示例:
输入: 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 题目《反转链表》的解题过程及结果。
點擊查看更多內(nèi)容
1人點贊
評論
評論
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦