题目:
给定一个单向链表的头结点head,以及两个整数from和to,在单向链表上把
第from个节点到第to个节点这一部分进行反转
要求:
1、如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)
给定一个单向链表的头结点head,以及两个整数from和to,在单向链表上把
第from个节点到第to个节点这一部分进行反转
要求:
1、如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)
2、如果不满足1<=from<=to<=N,则不用调整
public Node reversePart(Node head,int form, int to){
int len = 0;
Node node1 = head;
Node fPre = null;
Node tPos = null;
while(Node1 != null){
len ++;
fPre = len == from -1 ? node1 : fPre;
tPos = len == to + 1 ? node1 : tPos;
node1 = node1.next;
}
if(from > to || from < 1 || to > len){
return head;
}
node1 - fPre == null ? head:fPre.next;
Node node2 = node1.next;
node1.next = tPos;
Node next = null;
while(node2 != tPos){
next = node2.next;
node2.next = node1;
node1 = node2;
node2 = next;
}
if (tPre != null){
fPre.next = node1;
return head;
}
return node1;
}