链表指定区间反转

链表内指定区间反转

https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c?tpId=117&tags=&title=&diffculty=0&judgeStatus=0&rp=1&tab=answerKey

 public ListNode reverseBetween (ListNode head, int m, int n) {
        // write code here
        int i = 1;
        ListNode res = head;
        ListNode pre = new ListNode(1);
        pre.next = head;
        ListNode flag=new ListNode(0);
        while(head!=null){
            if(i>=m && i<=n){
                if(i==m){
        //保存反转后的最后一个节点 便于后面链接
                    flag = pre.next;
                }
                ListNode temp = head.next;
                head.next = pre.next;
                pre.next = head;
                head = temp;
                if(i==n){
        //将反转后的最后一个节点连接起来
                    flag.next = head;
                }
            }else if(i>n){
                head = head.next;
            }else{
                head = head.next;
                pre = pre.next;
            }
            i++;
            //head = head.next;
            //pre = pre.next;
        }
        //**注意可能从第一个节点就开始反转,所以结果也不一样**
        return m==1?pre.next:res;
    }
全部评论

相关推荐

书海为家:实习是成为大厂正式员工很好的敲门砖,看您的简历中有一段实习经历,挺好的。我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己实习时做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
点赞 评论 收藏
分享
快刀斩offer:干测试,项目组就我一个测试,准备在职考研跑路了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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