题解 | #链表中的节点每k个一组翻转#
链表中的节点每k个一组翻转
https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode reverseKGroup (ListNode head, int k) {
// write code here
ListNode dummyListNode = new ListNode(-1);
dummyListNode.next = head;
ListNode pre = dummyListNode;
int i = 0;
ListNode leftNode = pre.next;
ListNode rightNode = pre.next;
ListNode tmpNode;
while(rightNode != null){
i++;
if(i == k){
i =0;
tmpNode = rightNode.next;
pre.next = null;
rightNode.next = null;
reverseNode(leftNode);
pre.next = rightNode;
leftNode.next = tmpNode;
pre = leftNode;
rightNode = tmpNode;
leftNode = tmpNode;
}else{
rightNode = rightNode.next;
}
}
return dummyListNode.next;
}
public ListNode reverseNode(ListNode head){
ListNode newListNode = null;
while(head != null){
ListNode tmpNode = head.next;
head.next = newListNode;
newListNode = head;
head = tmpNode;
}
return newListNode;
}
}

阿里云工作强度 647人发布