题解 | #链表内指定区间反转#翻转指定区间的链表:简洁版

链表内指定区间反转

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

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @param m int整型 
     * @param n int整型 
     * @return ListNode类
     */
    ListNode* reverseBetween(ListNode* head, int m, int n) {
        // write code here
        ListNode* prev = nullptr;
        ListNode* curr = head;
        //1.遍历到翻转起点
        int cnt = 1;
        while(cnt < m && curr)
        {
            cnt++;
            prev = curr;
            curr = curr -> next;
        }
        if(!curr) return head;
        
        //2.记录断点
        ListNode* breTail = prev; 
        ListNode* breHead = curr;
        prev = nullptr;
        
        //3.转m~n节点
        ListNode* tmp = nullptr;
        while(curr)
        {
            cnt++;
            tmp = curr -> next;
            curr -> next = prev;
            prev = curr;
            if(cnt == n + 1) break;
            curr = tmp;
        }
        
        //4.重新连接
        if(breTail) breTail -> next = curr; //m = 1时breTail为nullptr
        breHead -> next = tmp;       
        return m == 1 ? curr : head; 
    }
};

全部评论

相关推荐

11-17 11:15
门头沟学院 Java
金山办公终于发offer了,但薪资和平台都不如已有的offer打算拒了,A不了薪资,不满意直接拒了,留给需要的人嘿嘿嘿时间线:10.14线下一面&nbsp;,10.23线上二面,下午发测评,11月1日HR面,11月14日电话谈薪,11月17日直接发offer
star__plat...:好兄弟干的好啊,解气。金山第一次笔难度高的离谱,第二次简单的离谱全A了,用人部门筛选中估计最后还是要挂我,就这今早智联招聘还给我发信息让我投
offer帮选
点赞 评论 收藏
分享
10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
改命改命:这个过了也不一定拿offer,还得去实习一周😓
投递CVTE等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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