题解 | #链表中的节点每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 if(head==null||head.next==null||k<2) return head; ListNode dummy=new ListNode(0);//头指针 dummy.next=head; ListNode pre=dummy,cur=head,temp; int len=0; while(head!=null){//求链表长度 head=head.next; len ++; } for(int i=0;i<len/k;i++){//分段 for(int j=1;j<k;j++){//j=1,每次要操作2位 temp=cur.next;//temp转换位 cur.next=temp.next;//cur本位执行temp上一位 temp.next=pre.next;//temp执行首位 pre.next=temp;//pre执行新的首位 } System.out.println(); pre=cur;//pre指向排好的最后一位 cur=cur.next;//cur指向下一个的首位 } return dummy.next; } }