题目:反转部分单向链表,如果链表长度为N,时间复杂度要求为O(N),额外空间复杂度要求为O(1)。如果不满足1<=from<=to<=N则不用调整。
实现:
- 先判断是否满足1<=from<=to<=N,不满足就不需要调整,直接返回头节点。
- 找到需要反转部分的前一个节点fPos=from-1和后一个节点tPos=to+1。
- 把需要反转的地方先反转,然后正确地连接fPos和tPos。
- 如果fPos=null,则说明反转部分包含头节点,反转之后返回新的头节点;
如果fPos不为空,则返回旧的头节点。
1 | public class ReversePart { |