leetcode86. Partition List

来源:互联网 发布:像素软件招聘 编辑:程序博客网 时间:2024/05/21 10:09

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 and x = 3,
return 1->2->2->4->3->5.

Subscribe to see which companies asked this question


package leetcode86;public class Solution {public ListNode partition(ListNode head, int x) {if(head==null){return head;}ListNode newHead = new ListNode(-1);ListNode newHead2 = new ListNode(-1);ListNode r = newHead,r2=newHead2;ListNode p = head,q;while(p!=null){q=p.next;if(p.val<x){r.next=p;r=p;p=q;if(p!=null) q = q.next;}else{r2.next=p;r2=p;p=q;if(p!=null) q=q.next;}}r2.next=null;r.next=newHead2.next;return newHead.next;}public ListNode create(int[] a){ListNode head = new ListNode(a[0]);ListNode q = head;for(int i=1;i<a.length;i++){ListNode p = new ListNode(a[i]);p.next=null;q.next=p;q=p;}return head;}public void show(ListNode head){ListNode p = head;while(p!=null){System.out.println(p.val);p=p.next;}}public static void main(String[] args) {// TODO Auto-generated method stubint[] a = {1,4,3,2,5,2};Solution s = new Solution();ListNode head = s.create(a);s.show(head);System.out.println("*****************");head = s.partition(head, 3);s.show(head);}}class ListNode {int val;ListNode next;ListNode(int x) {val = x;}}


0 0