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

链表内指定区间反转

http://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */

/**
  * 
  * @param head ListNode类 
  * @param m int整型 
  * @param n int整型 
  * @return ListNode类
  */
//和链表反转类似,关键在于确定指定区间的前后节点

function reverseBetween( head ,  m ,  n ) {
    // write code here
  let cur=head
  let pre=null
  for(let i=1;i<m;i++){
      pre=cur
      cur=cur.next
  }
    let oldpre=pre
    let oldcur=cur
    for(let i=m;i<=n;i++){
       let next=cur.next
       cur.next=pre
        pre=cur
        cur=next
    }
  //特殊情况有指定区间是前几个
    if(oldpre!=null){
        oldpre.next=pre
    }else{
        head=pre
    }
    oldcur.next=cur
    return head
    
    
}
module.exports = {
    reverseBetween : reverseBetween
};
全部评论

相关推荐

徐新高:号已经废了 建议重开一个账号投简历
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务