給你一個鏈表和一個特定值 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;}
}