#
# @lc app=leetcode.cn id=206 lang=python3
#
# [206] 反转链表
#
# https://leetcode-cn.com/problems/reverse-linked-list/description/
#
# algorithms
# Easy (72.11%)
# Likes:    1886
# Dislikes: 0
# Total Accepted:    638K
# Total Submissions: 884.7K
# Testcase Example:  '[1,2,3,4,5]'
#
# 给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。
# 
# 
# 
# 
# 示例 1：
# 
# 
# 输入：head = [1,2,3,4,5]
# 输出：[5,4,3,2,1]
# 
# 
# 示例 2：
# 
# 
# 输入：head = [1,2]
# 输出：[2,1]
# 
# 
# 示例 3：
# 
# 
# 输入：head = []
# 输出：[]
# 
# 
# 
# 
# 提示：
# 
# 
# 链表中节点的数目范围是 [0, 5000]
# -5000 
# 
# 
# 
# 
# 进阶：链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题？
# 
# 
# 
#

# @lc code=start
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if not head:
            return head
        left = head
        right = head.next
        left.next = None
        while right:
            temp = right.next
            right.next = left
            left = right
            right = temp
        return left

        # if not head:
        #     return head
        # pre = None
        # curr = head
        # while curr:
        #     p = curr.next
        #     curr.next = pre
        #     pre = curr
        #     curr = p
        # return pre

# @lc code=end


ba5a68c0ac4250ebead22fff7fd02d3e3bf36740
<mask token>

class Solution:
    <mask token>

class Solution:

    def reverseList(self, head: ListNode) ->ListNode:
        if not head:
            return head
        left = head
        right = head.next
        left.next = None
        while right:
            temp = right.next
            right.next = left
            left = right
            right = temp
        return left

#
# @lc app=leetcode.cn id=206 lang=python3
#
# [206] 反转链表
#
# https://leetcode-cn.com/problems/reverse-linked-list/description/
#
# algorithms
# Easy (72.11%)
# Likes:    1886
# Dislikes: 0
# Total Accepted:    638K
# Total Submissions: 884.7K
# Testcase Example:  '[1,2,3,4,5]'
#
# 给你单链表的头节点 head ，请你反转链表，并返回反转后的链表。
# 
# 
# 
# 
# 示例 1：
# 
# 
# 输入：head = [1,2,3,4,5]
# 输出：[5,4,3,2,1]
# 
# 
# 示例 2：
# 
# 
# 输入：head = [1,2]
# 输出：[2,1]
# 
# 
# 示例 3：
# 
# 
# 输入：head = []
# 输出：[]
# 
# 
# 
# 
# 提示：
# 
# 
# 链表中节点的数目范围是 [0, 5000]
# -5000 
# 
# 
# 
# 
# 进阶：链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题？
# 
# 
# 
#

# @lc code=start
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if not head:
            return head
        left = head
        right = head.next
        left.next = None
        while right:
            temp = right.next
            right.next = left
            left = right
            right = temp
        return left

        # if not head:
        #     return head
        # pre = None
        # curr = head
        # while curr:
        #     p = curr.next
        #     curr.next = pre
        #     pre = curr
        #     curr = p
        # return pre

# @lc code=end

