【LeetCode 简单题】56-反转链表

声明:

今天是第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

猜你喜欢

转载自blog.csdn.net/weixin_41011942/article/details/83378714