206.反转链表
思路:头结点变成尾节点,因此要把头节点的指针指向空。
假设一个虚拟节点,其指向头节点。
所以就变成了三个节点的关系,首先要保留第三个节点,然后将第二个节点的指针指向第一个,然后将第一个节点和第二个节点往后移动一个单位。这样循环往复,就将整个链表反转完成了。但是要注意,最后的头节点是pre,而不是cur,不然就超出范围了。
迭代法
代码
# 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: Optional[ListNode]) -> Optional[ListNode]:pre,cur = None,headwhile cur:temp = cur.nextcur.next = prepre = curcur = tempreturn pre
复杂度
O(N)