您的位置:首页 > 其它

Partition List

2016-01-19 15:36 309 查看
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.

For example,

Given 1->4->3->2->5->2->null and x = 3,

return 1->2->2->4->3->5->null.

Have you met this question in a real interview? Yes

Example

Tags Expand

Related Problems Expand

Timer Expand

You have exceeded the time limit

解题要点 :

哑节点的使用; Dummy

/**
* Definition for ListNode.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int val) {
*         this.val = val;
*         this.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
ListNode leftDummy = new ListNode(0);
ListNode rightDummy = new ListNode(0);
ListNode node = head;
ListNode left = leftDummy;
ListNode right = rightDummy;
while(node!=null){
if (node.val<x) {
left.next=node;
left=left.next;
}else{
right.next =node;
right = right.next;
}
node=node.next;

}

right.next=null;
left.next=rightDummy.next;
return leftDummy.next;

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: