赞
踩
给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么将最后剩余节点保持原有顺序。
示例 :
给定这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
说明 :
首先计算链表长度
然后分部分进行反转,两两反转,如果k=3,则反转2次,如果k=4,则反转3次,如此往复,每部分反转k-1次
在纸上画出链表关系即可明显看出
注意:
// 表示整数除法
/ 表示浮点除法
常用链表,pre前一节点,cur当前节点,next下一节点,temp暂时节点(一般指向next的下一节点),这样就可完成大多数操作。
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def reverseKGroup(self, head: ListNode, k: int) -> ListNode: rel = ListNode(-1) rel.next = head pre = rel cur = head count = 0 while head!=None: count = count+1 head = head.next for i in range(count//k): for j in range(1,k): temp = cur.next cur.next = temp.next temp.next = pre.next pre.next = temp pre = cur cur = cur.next return rel.next
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。