[链表] - 反转部分单向链表

题目:
给定一个单向链表的头结点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;
}


猜你喜欢

转载自blog.csdn.net/qq_33526293/article/details/78813042