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

链表内指定区间反转

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

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param m int整型 
 * @param n int整型 
 * @return ListNode类
 */
struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {
    // write code here
    struct ListNode *next_node = NULL;
    struct ListNode *node = head;
    struct ListNode *last_node = NULL;
    struct ListNode *start = NULL;
    struct ListNode *first = NULL;
    struct ListNode *end = NULL;
    int cnt = 1;

    if (m == n)
        return head;

    while(node && (cnt <= n)) {
        if (cnt == m) {
            start = last_node;
            first = node;
        }
        next_node = node->next;
        if (cnt == n)
            end = next_node;
        if (cnt > m) {
            node->next = last_node;
        }
        cnt++;
        last_node = node;
        node = next_node;
    }
    first->next = end;   
    if (start) {
        start->next = last_node;
    } else {
        head = last_node;
    }
    return head;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 15:39
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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