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

链表内指定区间反转

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

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

class Solution {
public:
    ListNode *reverseBetween(ListNode *head, int m, int n) {
        ListNode *L = new ListNode(0);
        L->next = head;
        ListNode *p = L;
        ListNode *q = head;
        for(int i=1;i<m;i++) {
            p = q;
            q = q->next;  // 找到反转的起始位置
        }
        for(int i=0;i<n-m;i++) { // 反转
            ListNode *t = q->next;
            q->next = t->next;
            t->next = p->next;
            p->next = t;
        }
        return L->next;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
昨天 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务