Partition List
Description
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param head: The first node of linked list
* @param x: An integer
* @return: A ListNode
*/
public ListNode partition(ListNode head, int x) {
// write your code here
if(head == null ){
return null ;
}
ListNode dummy1 = new ListNode(-1) ;
ListNode dummy2 = new ListNode(-1) ;
ListNode left = dummy1 , temp = dummy2 ;
while(head != null){
if(head.val < x){
left.next = head ;
left = left.next ;
}else{
temp.next = head ;
temp = temp.next ;
}
head = head.next ;
}
temp.next = null ;
left.next = dummy2.next ;
return dummy1.next ;
}
}
本文介绍了一种链表分区算法,该算法将链表中小于给定值x的所有节点置于大于等于x的节点之前,同时保持各分区内的相对顺序不变。
5万+

被折叠的 条评论
为什么被折叠?



