Skip to content

原题链接

LeetCode;

typescript
function reverseBetween(head: ListNode | null, left: number, right: number): ListNode | null {
    // 不需要返回尾巴
   const reverse = (l: ListNode, r: ListNode) => {
      let prev = r.next;
      let current = l;
      while(current && prev !== r) {
         const next = current.next;
         current.next = prev;
         prev = current;
         current = next;
      };
      
   }

   let dummy = new ListNode(0, head);

   let ll = dummy;
   let rr = dummy;
    // 左节点前一个节点
   for(let i = 0; i < left - 1 ; i++) {
       ll = ll.next;
   }
   // 右节点
   for(let i = 0; i < right; i++) {
       rr = rr.next;
   }
  
   reverse(ll.next, rr);
   
   ll.next = rr;


   return dummy.next;
};