Saturday, December 2, 2017

[LeetCode]Reverse Nodes in k-Group

和普通的Reverse Linked List是类似的,难点就是我们要分块reverse了。有两种解法,递归和循环。递归的做法就是每次reverse k个node,然后继续递归reverse右边的节点,当前的尾巴连向右边新reverse之后的头节点。时间复杂度O(N), 空间复杂度因为有递归是O(N / k):


第二种就是循环,每次reverse一个长度为k的子链表,当前的尾巴连向右边新reverse之后的头节点。除此之外因为新的linkedlist的head节点和以前可能不一样,我们需要在左端用一个helper节点来帮我们keep track of新的头结点。时间O(N),常数空间,代码如下:


No comments:

Post a Comment