36氪网站是用什么做的,网站前瞻性_新流量机会内容建设分析,一级消防工程师考试科目有哪些,二 网站建设的目的及功能定位给你链表的头节点 head #xff0c;每 k 个节点一组进行翻转#xff0c;请你返回修改后的链表。
k 是一个正整数#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍#xff0c;那么请将最后剩余的节点保持原有顺序。
你不能只是单纯的改变节点内部的值…给你链表的头节点 head 每 k 个节点一组进行翻转请你返回修改后的链表。
k 是一个正整数它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍那么请将最后剩余的节点保持原有顺序。
你不能只是单纯的改变节点内部的值而是需要实际进行节点交换。
示例 1
输入head [1,2,3,4,5], k 2
输出[2,1,4,3,5]示例 2
输入head [1,2,3,4,5], k 3
输出[3,2,1,4,5]提示
链表中的节点数目为 n1 k n 50000 Node.val 1000
进阶你可以设计一个只用 O(1) 额外内存空间的算法解决此问题吗
Python实现
思路很直接就是遍历K个值然后进行翻转操作但这个链表容易出错要多加练习才行。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val0, nextNone):
# self.val val
# self.next next
class Solution:def reverse(self, head, tail):pre tail.nextp headwhile pre!tail:next_p p.nextp.next prepre pp next_preturn tail, headdef reverseKGroup(self, head: Optional[ListNode], k: int) - Optional[ListNode]:dummy ListNode(-1)dummy.next headpre dummyslow headwhile slow:fast prefor i in range(k):fast fast.nextif not fast:return dummy.nextt fast.nextslow , fast self.reverse(slow,fast)pre.next slowfast.next tpre fastslow fast.nextreturn dummy.next