您的位置:首页 > 其它

LeetCode 86 Partition List

2014-06-18 15:49 211 查看
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 singly-linked list.
 */
class ListNode {
	int val;
	ListNode next;

	ListNode(int x) {
		val = x;
		next = null;
	}
}

public class Solution {
	public ListNode partition(ListNode head, int x) {
		if(head==null||head.next==null) return head;
		
		ListNode dumny=new ListNode(-1);
		dumny.next=head;
		ListNode p=dumny;
		while(p.next!=null){
			if(p.next.val>=x) break;
			p=p.next;
		}
		
		ListNode cur=p.next;
		ListNode q=p;
		while(cur!=null){
			if(cur.val<x) {
				q.next=cur.next;
				cur.next=p.next;
				p.next=cur;
				p=p.next;
				cur=q.next;
			}else{
				cur=cur.next;
				q=q.next;
			}
		}
		return dumny.next;
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: