声明:
今天是第56道题。反转一个单链表。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除
(手动比心ღ( ´・ᴗ・` ))
正文
题目:反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
解法1。耗时40 ms, 在Reverse Linked List的Python提交中击败了42.14% 的用户,代码如下。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
tmp = None
pre = None
cur = head
while cur:
tmp = cur.next # 在切断当前节点指向下一节点这个关系前,先保存下一节点的信息
cur.next = pre # 改变指向
pre = cur # 改变指向完毕,pre前进1个节点,进行下一次指向改变
cur = tmp # cur也前进一个节点
return pre # cur此时已经指向None了,pre指向head(也即原链表的tail)
结尾
解法1:Leetcode