LeetCode动态图解---面试题 02.04. 分割链表

题目:

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你不需要 保留 每个分区中各节点的初始相对位置。

LeetCode动态图解---面试题 02.04. 分割链表_第1张图片

思路:

创建两个新的子链表,其中它们的节点由原链表构成。

一个链表存放所有大于val的值,零、另一个链表存放所有小于val的值,小于val 的节点的尾节点拼接大于val的链表的头节点即可。

动态图解:

 public ListNode partition(ListNode head, int x) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode smallHead = new ListNode();
        ListNode smallTail = smallHead;
        ListNode bigHead = new ListNode();
        ListNode bigTail = bigHead;
        

你可能感兴趣的:(算法,java)