湘潭做网站 去磐石网络/看书网站排名
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5
双链表法,把大与 x的节点放在一个新链表,
最后两个链表合起来
public ListNode partition(ListNode head, int x) {if(head == null ) return null;//起始ListNode dummy = new ListNode(-1);//新链表ListNode taildummy = new ListNode(-1);dummy.next = head;//第一个链表指针head = dummy;//第二个链表指针ListNode tail = taildummy;while (head.next != null){//小于x直接走if(head.next.val < x){head = head.next;}else {//大与x 把节点复杂到新链表ListNode node = new ListNode(head.next.val);tail.next = node;tail = node;//把旧链表删除head.next = head.next.next;}}//把两个链表连起来tail.next = null;head.next = taildummy.next;return dummy.next;}