给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。
    你应当保留两个分区中每个节点的初始相对位置。

    左右链表+head链表,三个移动指针,最后拼接

    1. function ListNode(val) {
    2. this.val = val;
    3. this.next = null;
    4. }
    5. var head = {
    6. val: 1,
    7. next: {
    8. val: 4,
    9. next: {
    10. val: 3,
    11. next: {
    12. val: 2,
    13. next: {
    14. val: 5,
    15. next: {
    16. val: 2,
    17. next: null
    18. }
    19. }
    20. }
    21. }
    22. }
    23. };
    24. var partition = function (head, x) {
    25. let l = new ListNode();
    26. let r = new ListNode();
    27. let tmp = head;
    28. let tmpl = l;
    29. let tmpr = r;
    30. //左右链表+head链表,三个移动指针,最后拼接
    31. //为什么不是val ,因为用对象表示链表,只要是对象就不是链表位
    32. while (tmp !== null) {
    33. if (tmp.val < x) {
    34. tmpl.next = new ListNode(tmp.val);
    35. tmpl = tmpl.next;
    36. } else {
    37. tmpr.next = new ListNode(tmp.val);
    38. tmpr = tmpr.next;
    39. }
    40. tmp = tmp.next;
    41. }
    42. tmpl.next = r.next;
    43. return l.next;
    44. };
    45. // let head = [1, 4, 3, 2, 5, 2];
    46. let x = 3;
    47. console.log(partition(head, x))