题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
/*class ListNode { * val: number * next: ListNode | null * constructor(val?: number, next?: ListNode | null) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ export function reverseBetween(head: ListNode, m: number, n: number): ListNode { // write code here let pre:ListNode|null=null,next:ListNode=head.next; let mNode:ListNode|null=null,mPreNode:ListNode|null=null; let nNode:ListNode|null=null,nNextNode:ListNode|null=null; let count=1; let cHead =head while(cHead!==null && count<=n){ if(count===m){ mNode = cHead mPreNode=pre; } if(count>m){ cHead.next=pre } if(count ===n){ nNode =cHead nNextNode=next; } pre = cHead cHead = next; if(cHead){ next = cHead.next } count++ } if(mNode){ mNode.next = nNextNode; } if(mPreNode){ mPreNode.next = nNode; } if(m ===1){ head = nNode } return head }