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

链表内指定区间反转

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
    int i = 1;
    struct ListNode* L, * s;
    struct ListNode* last, * last1;
    L = (struct ListNode*)malloc(sizeof(struct ListNode));
    L->next = NULL;
    last = L;
    while (head) {
        while (i < m && head != NULL) {
            s = (struct ListNode*)malloc(sizeof(struct ListNode));
            s->val = head->val;
            s->next = last->next;
            last->next = s;
            last = s;
            head = head->next;
            i++;
        }
        while (i >= m && i <= n && head != NULL) {
            s = (struct ListNode*)malloc(sizeof(struct ListNode));
            s->val = head->val;
            s->next = last->next;
            last->next = s;
            if (i == m) {
                last1 = s;
            }
            head = head->next;
            i++;
        }
        while (i > n && head != NULL) {
            s = (struct ListNode*)malloc(sizeof(struct ListNode));
            s->val = head->val;
            s->next = last1->next;
            last1->next = s;
            last1 = s;
            head = head->next;
            i++;
        }

    }
    return L->next;
}

全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务