https://leetcode.com/problems/partition-list/#/description
问题描述:按照指定的值x,将链表分开,将小于x的排序放在x的前面,大于等于x的节点按顺序放在x的后面。
思路解析:重新创建两个链表,一个用来按顺序存放小于x的结点,另一个用来按顺序存放大于等于x的结点。最后将两个链表合并。
代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode partition(ListNode head, int x) {
ListNode d1=new ListNode(0);
ListNode d2=new ListNode(0);
ListNode c1=d1,c2=d2;
while(head!=null){
if(head.val<x)
{
c1.next=head;
c1=head;
}else{
c2.next=head;
c2=head;
}
head=head.next;
}
c2.next=null;
c1.next=d2.next;
return d1.next;
}
}