题解 | #链表内指定区间反转#

链表内指定区间反转

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
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
08-15 16:48
想要一个AK:问题很多加微信私聊 (一个赞十道算法题,我看看有多少)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务