📅  最后修改于: 2023-12-03 15:09:38.184000             🧑  作者: Mango
本题目需要将链表中最后 m 个结点移动到链表的前面,可以分为以下步骤:
以下是示例代码(假设链表结点类型为 ListNode
):
def MoveLastMToHead(head: ListNode, m: int) -> ListNode:
if not head or not head.next or m <= 0:
return head
# 遍历链表,确定结点总数 n
n = 0
cur = head
while cur:
n += 1
cur = cur.next
if m >= n:
return head
# 找到倒数第 m+1 个结点,即需要调整的结点的前驱结点
cur = head
for i in range(n - m - 1):
cur = cur.next
# 将表尾 m 个结点的 next 指针指向表头结点
tail = cur.next
while tail.next:
tail = tail.next
tail.next = head
# 将前驱结点的 next 指针指向表尾结点
new_head = cur.next
cur.next = None
return new_head
以上代码可以将最后 m 个元素移动到链表的前面。