给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入:head = 1->4->3->2->5->2, x = 3
输出:1->2->2->4->3->5
代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/
class Solution {public ListNode partition(ListNode head, int x) {ListNode left=new ListNode(0),l=left;//比x小的节点放置的链表ListNode right=new ListNode(0),r=right;//大于等于x的节点放置的链表while (head!=null){ListNode next=head.next;if(head.val<x){l.next=head;l=head;}else {r.next=head;r=head;}head.next=null;head=next;}l.next=right.next;//合并两个链表return left.next;}
}