思路

主要思路是创建两个链表,一个保存值小于x的元素,另一个保存值大于等于x的元素。最后进行合并
算法
code
public ListNode partition(ListNode head, int x) {//设立两个虚拟头结点 分别保存比x小的元素和比x大的元素ListNode before_head = new ListNode(-1);ListNode after_head = new ListNode(-1);ListNode before = before_head;ListNode after = after_head;while(head!=null){if(head.val<x){ //如果遇到比x小的元素before.next = head;before = before.next;}else{after.next = head;after = after.next;}head = head.next;}after.next = null; //后面部分的尾部设为nullbefore.next = after_head.next; //连接上两个链表return before_head.next; //返回第一部分的虚拟头结点的next}



