牛客网高频算法习题系列-BM2-链表中指定区间的反转问题描述制作一个链表,其节点数为size从m个位置到n个位置之间的区间求逆,需要时间复杂度O(n)和空间复杂度O(1)。见原题:BM2链表中指定范围的倒置解决方案一:链表遍历,指针交换因为起始位置可能是头节点,所以先设置一个虚拟头节点dummyNode并指向原头节点的next,然后处理过程如下:首先遍历链表,找到起始位置m的前一个节点pre,用它来记录反转前的节点;然后用cur和next记录pre的下一个节点,用next记录cur点的下一个节点;然后继续遍历链表,通过交换pre、next、cur的next指针,将next节点传递给pre节点的下一个节点,然后循环处理cur的下一个节点;遍历到结束位置n的节点为反转结束。最后返回dummyNode节点的下一个节点就是反向链表。publicclassBm002{/***@paramheadListNodeclass*@paramm开始位置*@paramn结束位置*@returnListNodeclass*/publicstaticListNodereverseBetween(ListNodehead,intm,intn){if(head==null||head.next==null){returnhead;}if(m==n){返回头;}//设置虚拟头节点ListNodedummyNode=newListNode(-1);dummyNode.next=head;//pre为反向区间ListNode的前一个节点pre=dummyNode;for(inti=0;i
