题解 | #链表中的节点每k个一组翻转#

链表中的节点每k个一组翻转

https://www.nowcoder.com/practice/b49c3dc907814e9bbfa8437c251b028e

<?php

/*class ListNode{
    var $val;
    var $next = NULL;
    function __construct($x){
        $this->val = $x;
    }
}*/

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param k int整型 
 * @return ListNode类
 */
function reverseKGroup( $head ,  $k )
{
    // write code here
    if($head == null || $head->next == null){
        return $head;
    }
    $pre = null;
    $beg = $head;
    $end = $head;
    $c = 1;
    $ret = $head; // 最终要返回的头部指针
    while($end != null && $c < $k){
        $end = $end->next;
        $c++;
        if($c == $k && $end != null){
            printf("group: ".$c."\n");
            // 退到了组的结束节点,并且本组数量为k个,可以开始区间内翻转
            $reverseStart = $beg;
            $reversePre = $pre;
            for($i=0;$i < $k;$i++){
                $temp = $beg->next;
                $beg->next = $pre;
                $pre = $beg;
                $beg = $temp;
            }
            // 翻转完,判断最初的是null还是连接了其他key
            if($reversePre != null){
                $reversePre->next = $pre;
            }else{
                // 记录头部指针
                $ret = $pre;
            }
            $reverseStart->next = $beg;
            $end = $beg;
            $pre = $reverseStart;
            $c=1;
        }   
    }
    return $ret;
}

方法同反转某段链表,分段执行。

#刷题攻略#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 16:46
今天本来好好的,结果带教老师当着众人的面,直接大声叫我的名字,我过去还没站稳,劈头盖脸就是一句:“你这搞的什么玩意啊!没带脑子上班吗”那语气、那眼神,仿佛我做了什么十恶不赦的大事。我到底干啥了?不过是一些小疏漏,谁刚开始实习不会犯错啊?可她倒好,不仅不耐心指导,还这样贬低我。我满心的热情和期待,瞬间被浇了个透心凉🥶我也是爹妈疼爱的宝贝,来实习是为了学习、成长,不是来被人随意羞辱的!真心希望遇到的带教老师能多些耐心和善意,毕竟谁都有从零开始的时候,这样的“教育”方式,真的只会让人越来越没自信
longerluck...:前几年实习(初创公司),我们老板每月不固定会举行会议,叫我们几个实习生谈一下生活看到或听到的一些事情,并给出看法,当时我就正常讲了下我所见到的,没有个人看法,老板直接当着众人的面骂了我,那时候我真是感觉尴尬的要死(毕竟还有其他正式员工在)后面没待多久我就提出离职(因为当时我还负责一个项目),我leader叫我不要走,说给我涨工资,我反正觉得这种公司我是待不下去了,官味太重了,最后我还是跑路
实习吐槽大会
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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