题解 | #链表中的节点每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) {
        // 递归法
	  //tail是每k个节点分组的第一个节点
        ListNode tail = head;
        int i = 1;
        while(i <= k){
		  //先判断,再next
            if(tail == null) return head;
            tail = tail.next;
            i++;
        }
        ListNode pre = null, cur = head;
	  //反转链表
        while(cur != tail){
            ListNode temp = cur.next;
            cur.next = pre;
            pre = cur;
            cur = temp;
        }
	  //递归调用,tail是每k个节点分组的第一个节点
        head.next = reverseKGroup(tail, k);
	  //pre是反转链表后的头节点
        return pre;
    }
}

#刷题记录#
全部评论

相关推荐

nbdy:字太多了,写简历不是写自传,亮点难点技能点列出来就行,要简明扼要
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务