题解 | #牛群的重新排列#

更多关于算法题解、软件开发面经、机器学习算法面经、各企业面试问题记录,关注Fintech砖,持续更新中。https://www.nowcoder.com/users/873777317

企业面试记录专栏https://www.nowcoder.com/creation/manager/columnDetail/0YBWnm

机器学习面经专栏https://www.nowcoder.com/creation/manager/columnDetail/j8nNy0

软件开发面经专栏https://www.nowcoder.com/creation/manager/columnDetail/0aXKaM

【1】题目考察的知识点:链表、虚拟指针

【2】题目解答方法的文字分析

  1. 判断特殊情况,节点为空或者翻转k为0或者1
  2. 统计链表长度,计算需要翻转的段数 3在每一段需要反转的链表进行k-1次节点依次翻转 4定义pre、cur、next节点进行翻转。

【3】本题解析所用的编程语言:java

【4】完整且正确的编程代码

 public ListNode reverseKGroup (ListNode head, int k) {
        //判断特殊情况
        if(head==null || k<=1)return head;
        //统计链表长度
        int len=0;
        ListNode node=head;
        while(node!=null){
            len++;node=node.next;
        }
        int r=len/k;
        //定义头节点虚拟节点
        ListNode dummy = new ListNode(-1);
        dummy.next=head;
        ListNode pre=dummy;
        ListNode cur=head;
        //递归遍历
        for(int i=0;i<r;i++){
            for(int j=1;j<k;j++){
                ListNode next=cur.next;
                cur.next=next.next;
                next.next=pre.next;
                pre.next=next;
            }
            pre=cur;
            cur=cur.next;
        }
    return head;
    }

#晒一晒我的offer##如何判断面试是否凉了##软件开发薪资爆料##我的实习求职记录##互联网没坑了,还能去哪里?#
编程算法题详解集锦 文章被收录于专栏

牛客top101+牛客top202+leetcode热题

全部评论

相关推荐

计算机遨游小白:可能是后端没HC了,用前端的HC招
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务