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

链表内指定区间反转

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;
}

全部评论

相关推荐

兄弟们,实习都是在接各种api,该怎么包装简历
仁者伍敌:感觉我自己做小项目也是各种api啊,我要怎么包装简历
点赞 评论 收藏
分享
见见123:简历没有啥问题,是这个社会有问题。因为你刚毕业,没有工作经历,现在企业都不要没有工作经历的。社会病了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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