leetcode25

给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。javascript

k 是一个正整数,它的值小于或等于链表的长度。java

若是节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。git

示例 :github

给定这个链表:1->2->3->4->5oop

当 k = 2 时,应当返回: 2->1->4->3->5spa

当 k = 3 时,应当返回: 3->2->1->4->5code

var reverseList = function(head) {
    let pre = null
    let curr = head
    let next;
    while (curr != null) {
      next = curr.next
      curr.next = pre;
      pre = curr;
      curr = next;
    }
    return pre
};
var reverseKGroup = function(head, k) {
    let revList = new ListNode(0)
    revList.next = head
    let pre = revList
    let end = revList
    let loopCurr = head
    while (end != null) {
      for(let i = 0; i < k && end != null; i ++ ) {
        end = end.next
      }
      if (end == null) break;
      let start = pre.next
      let next = end.next
      end.next = null;
      pre.next = reverseList(start);
      start.next = next;
      pre = start;
      end = pre;
    }
    return revList.next
};
复制代码

题解回头补上,太晚了,先休息了。
源码ip

相关文章
相关标签/搜索