image.png
image.png

题解

  1. /**
  2. * Definition for singly-linked list.
  3. * function ListNode(val, next) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.next = (next===undefined ? null : next)
  6. * }
  7. */
  8. /**
  9. * @param {ListNode} head
  10. * @param {number} k
  11. * @return {ListNode}
  12. */
  13. const reverse = (head, b) => {
  14. if (!head) return null;
  15. let target = head;
  16. let pre = null;
  17. while (target != b) {
  18. let temp = target.next;
  19. target.next = pre;
  20. pre = target;
  21. target = temp;
  22. }
  23. return pre;
  24. }
  25. var reverseKGroup = function (head, k) {
  26. if (!head) return null;
  27. let a = b = head;
  28. for (let i = 0; i < k; i++) {
  29. if (!b) return head;
  30. b = b.next;
  31. }
  32. let newNode = reverse(a, b);
  33. a.next = reverseKGroup(b, k);
  34. return newNode;
  35. };