一、题目:
描述
将一个链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n),空间复杂度 O(1)。
例如:
给出的链表为 1→2→3→4→5→NULL,返回 1→4→3→2→5→NULL
注意:
给出的 m,n 满足以下条件:
1 <=m <= n <= 链表长度
二、输入输出示例:
三、代码:
方法一:暴力反转
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
ListNode *reverse(ListNode *first,ListNode *last){
ListNode *p1,*p2,*p3;
p1 = NULL;
p2 = first;
while(p2 != last){
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
p2->next = p1;
return p2;
}
class Solution {
public:
/**
*
* @param head ListNode类
* @param m int整型
* @param n int整型
* @return ListNode类