题解 | #链表内指定区间反转#

链表内指定区间反转

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

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

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 *ans = new ListNode(-1);
        ans->next = head;
        ListNode *leftNode = ans;
        // 定位到第m-1位;
        for(int i=0;i<m-1;++i)
        {
            leftNode = leftNode->next;
        }

        ListNode *rightNode = leftNode;
        // 定位到n+1,
        for(int i=m;i<n+1;++i)
        {
            rightNode = rightNode->next;
        }

        // 截取出一个子链表
        ListNode *temp = leftNode->next;
        ListNode *rightNode_next = rightNode->next;

        // 切断链接
        leftNode->next = NULL;
        rightNode->next = NULL;

        // 反转局部链表
        ListNode *temp_pre = NULL;
        ListNode *temp_cur = temp;
        while(temp_cur)
        {
            ListNode *temp_cur_next = temp_cur->next;
            temp_cur->next = temp_pre;
            temp_pre = temp_cur;
            temp_cur = temp_cur_next;
        }

        // 接回原来的链表
        leftNode->next = rightNode;
        temp->next = rightNode_next;

        return ans->next;
    }
};

#算法#
C++题库 文章被收录于专栏

非淡泊无以明志,非宁静无以致远

全部评论

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务