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

牛群的重新排列

https://www.nowcoder.com/practice/5183605e4ef147a5a1639ceedd447838

知识点:

链表/反转

分析:

1.设置一个dummy节点, g指向dummy,p指向dummy的next

2.先将两个指针往后移动left个

3.然后开始遍历区间长度right-left进行反转

编程语言:

C++

完整代码:

    ListNode* reverseBetween(ListNode* head, int left, int right) {
        //先设置一个dummy结点
        ListNode* dummy = new ListNode(0);
        dummy->next = head;
        ListNode* g = dummy;  //双指针 1. 指向dummy
        ListNode* p = dummy->next; //双指针 2.指向dummy的下一个
        for(int i = 0;i< left - 1;i++){    //同时向后移动left个
            p = p->next;
            g = g->next;    
        }
        for(int i= 0; i<right - left;++i){ //然后遍历这个区间段内的长度
            ListNode* tmp = p->next;
            p->next = p->next->next;
            tmp->next = g->next;
            g->next = tmp;
        }
        return dummy->next;
    }

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务