给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
左右链表+head链表,三个移动指针,最后拼接
function ListNode(val) {this.val = val;this.next = null;}var head = {val: 1,next: {val: 4,next: {val: 3,next: {val: 2,next: {val: 5,next: {val: 2,next: null}}}}}};var partition = function (head, x) {let l = new ListNode();let r = new ListNode();let tmp = head;let tmpl = l;let tmpr = r;//左右链表+head链表,三个移动指针,最后拼接//为什么不是val ,因为用对象表示链表,只要是对象就不是链表位while (tmp !== null) {if (tmp.val < x) {tmpl.next = new ListNode(tmp.val);tmpl = tmpl.next;} else {tmpr.next = new ListNode(tmp.val);tmpr = tmpr.next;}tmp = tmp.next;}tmpl.next = r.next;return l.next;};// let head = [1, 4, 3, 2, 5, 2];let x = 3;console.log(partition(head, x))
