题解 | #链表内指定区间反转#
链表内指定区间反转
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;
}

查看5道真题和解析
海康威视公司福利 1154人发布