LeetCode 86. 分隔链表(Partition List)
Posted hglibin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 86. 分隔链表(Partition List)相关的知识,希望对你有一定的参考价值。
86. 分隔链表
86. Partition List
题目描述
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
LeetCode86. Partition List中等
示例:
输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5
输出: 1->2->2->4->3->5
Java 实现
ListNode Class
public class ListNode
int val;
ListNode next;
ListNode(int x)
val = x;
@Override
public String toString()
return val + "->" + next;
方法一
import java.util.LinkedList;
import java.util.Queue;
class Solution
public ListNode partition(ListNode head, int x)
ListNode dummy = new ListNode(0);
ListNode tail = dummy;
Queue<Integer> queue = new LinkedList<>();
while (head != null)
if (head.val < x)
tail.next = head;
tail = tail.next;
else
queue.add(head.val);
head = head.next;
while (!queue.isEmpty())
tail.next = new ListNode(queue.poll());
tail = tail.next;
return dummy.next;
方法二
class Solution
public ListNode partition(ListNode head, int x)
ListNode dummy1 = new ListNode(0);
ListNode dummy2 = new ListNode(0);
ListNode curr1 = dummy1;
ListNode curr2 = dummy2;
while (head != null)
if (head.val < x)
curr1.next = head;
curr1 = curr1.next;
else
curr2.next = head;
curr2 = curr2.next;
head = head.next;
curr2.next = null; // very important!
curr1.next = dummy2.next;
return dummy1.next;
参考资料
以上是关于LeetCode 86. 分隔链表(Partition List)的主要内容,如果未能解决你的问题,请参考以下文章