LeetCode Partition List

来源:互联网 发布:java 没有初始化string 编辑:程序博客网 时间:2024/05/16 14:14

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.

题意:将小于x的移到前面,大于等于的放到后面,相对顺序不变。

思路:不难的链表问题,处理一下就行了,两个链表辅助。

/** * Definition for singly-linked list. * public 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) return null;                ListNode lessNode = new ListNode(0);        ListNode greaterNode = new ListNode(0);        ListNode cur = head, less = lessNode, greater = greaterNode;        while (cur != null) {        ListNode next = cur.next;        if (cur.val < x) {        less.next = cur;        less = less.next;        less.next = null;        } else {        greater.next = cur;        greater = greater.next;        greater.next = null;        }        cur = next;        }                less.next = greaterNode.next;        return lessNode.next;    }}



0 0
原创粉丝点击