LeetCode - 25

在这里插入图片描述


第四步:创建一个逆序 k 个节点 的 方法 myReverse,返回值为 ListNode[] 数组,将我们逆序后 “头节点”和“尾结点”返回,也方便我们将其接回原链表当中,因为我们记录 逆序节点 中 “头节点的前驱节点prev” 和 “尾巴节点的前驱节点tail”


在这里插入图片描述

第四步的执行过程

在这里插入图片描述


第五步: 将返回来的 “头节点” 和 “尾结点”,重新置换刚开指向位置,方便我们后续接入原链表中。


在这里插入图片描述

第五步:效果

在这里插入图片描述


第六步:将逆序后的节点 重新接入链表中


在这里插入图片描述


第七步: 为下一次,k个节点 逆序做准备


在这里插入图片描述


第八步: 将 逆序后的链表返回


在这里插入图片描述

在这里插入图片描述


程序写到这里,就写完了!

===========================================================================

在这里插入图片描述


最后附上程序

=====================================================================


/**

 * Definition for singly-linked list.

 * public class ListNode {

 *     int val;

 *     ListNode next;

 *     ListNode() {}

 *     ListNode(int val) { this.val = val; }

 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }

 * }

 */

class Solution {

    public ListNode reverseKGroup(ListNode head, int k) {

        ListNode newHead = new ListNode();// 新建一个傀儡头节点

        newHead.next = head;// 将原本的 头节点 head 接入 新头节点的next

        ListNode prev = newHead;



        while(head!=null){// 如果head为null,说明没有节点需要逆序了

            ListNode tail = prev;

            // 判断 傀儡节点后面的 节点个数 是否满足 逆序节点个数的要求

            for(int i = 0;i < k;i++){

                tail = tail.next;

                if(tail == null){

                    return newHead.next;

                }

            }

            ListNode tailNext = tail.next;

            ListNode[] reverse = myReverse(head,tail);



            head = reverse[0];

            tail = reverse[1];



            prev.next = head;

            tail.next = tailNext;



            prev = tail;

            head = tail.next;

        }

        return newHead.next;

    }

    public static ListNode[] myReverse(ListNode head,ListNode tail){

        ListNode pre = tail.next;

        ListNode p = head;

        while(pre != tail){



**面试资料整理汇总**

![成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题](https://img-blog.csdnimg.cn/img_convert/a246890d63ea1c9d51abd34687bba647.webp?x-oss-process=image/format,png)

![成功从小公司跳槽进蚂蚁定级P7,只因刷了七遍这些面试真题](https://img-blog.csdnimg.cn/img_convert/123d59c949724ee8e09b0bd3bcd94577.webp?x-oss-process=image/format,png)

这些面试题是我朋友进阿里前狂刷七遍以上的面试资料,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。

面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了

**在这里祝大家能够拿到心仪的offer!**

909363)]

[外链图片转存中...(img-vxquYvo4-1714412909363)]

这些面试题是我朋友进阿里前狂刷七遍以上的面试资料,由于面试文档很多,内容更多,没有办法一一为大家展示出来,所以只好为大家节选出来了一部分供大家参考。

面试的本质不是考试,而是告诉面试官你会做什么,所以,这些面试资料中提到的技术也是要学会的,不然稍微改动一下你就凉凉了

**在这里祝大家能够拿到心仪的offer!**

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值