关于反转链表的讲解可以看这篇leetcode解析非常详细。
反转链表从简单到难主要有三种题:
1.反转链表
2.反转链表 II
3.K 个一组翻转链表
1.反转链表
反转链表的递归写法
class Solution(object):
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
if not head or not head.next:return head
node = self.reverseList(head.next)
head.next.next = head
#这里的head.next是开始链表头结点之后的节点,也就是反转链表后的最后一个节点
head.next = None
return node
另外,反转链表的非递归写法更容易理解
# 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:
if not head or not head.next:
return head
pre =