要保持原始顺序的情况下翻转链表,可以使用迭代或递归的方法来解决。以下是两种方法的代码示例:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseLinkedList(head):
prev = None
curr = head
while curr:
next_node = curr.next
curr.next = prev
prev = curr
curr = next_node
return prev
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseLinkedList(head):
if not head or not head.next:
return head
reversed_head = reverseLinkedList(head.next)
head.next.next = head
head.next = None
return reversed_head
上述两种方法的时间复杂度都是O(n),其中n是链表的长度。迭代方法使用了三个指针来逐个翻转节点,而递归方法则通过递归调用来实现翻转。
上一篇:保持原始矩阵的组合矩阵