题解 | #链表中的节点每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 test=head;
ListNode pre=null;
ListNode nextnode=null;
ListNode prebegin=null;
ListNode res=null;
Deque<ListNode> prelist=new LinkedList<>();
boolean a=true;
boolean jump=false;
int j=0;
if(head==null || k==1){
return head;
}
while(head!=null){
System.out.println("第"+j+"次循环");
test=head;
for(int i=0;i<k;i++){
if(test==null){
a=false;
break;
}
else test=test.next;
}
//System.out.println(a);
//prebegin=head;
prelist.add(head);
// System.out.println("firest prebegin = "+prebegin.val);
if(a){
for(int i=0;i<k;i++){
System.out.println("head = "+head.val);
nextnode=head.next;
if(i!=0){
System.out.println("head= "+head.val+ " next ="+pre.val );
head.next=pre;
}
pre=head;
head=nextnode;
}
if(j==0){
res=pre;
System.out.println("begin = "+res.val);
}
else {
System.out.println("b2222n = ");
prebegin=prelist.remove();
prebegin.next=pre;
System.out.println("prebegin="+prebegin.val+ " next= "+pre.val);
}
}
else{
jump=true;
if(j==0){
System.out.println("333");
res=head;
break;
}
System.out.println("111");
prebegin=prelist.remove();
prebegin.next=head;
System.out.println("prebegin="+prebegin.val+ " next= "+head.val);
break;
}
System.out.println("jjj");
j++;
}
if(!prelist.isEmpty()&& !jump){
System.out.println("XXXX");
prebegin=prelist.remove();
prebegin.next=null;
System.out.println("prebegin="+prebegin.val+ " next= null ");
}
System.out.println("结果:"+res.val);
test=res;
while(test!=null){
System.out.print(test.val+"->");
test=test.next;
}
return res;
}
}
查看20道真题和解析