大家好,欢迎来到《LeetCode趣味解题》。今天我们来聊聊LeetCode上的一道有趣题目——第86题,分隔链表。这道题目是链表操作中的经典问题,考察我们对链表操作的基本功和对节点移动的熟练掌握。接下来,我将会给大家带来详细的解析,包括多种解题思路和代码实现,保证让你在解决这个问题时游刃有余。
题目描述
给定一个链表和一个值x,要求对链表进行分隔,使得所有小于x的节点都在大于或等于x的节点之前。保留每个分区内的节点的初始相对位置。
例子
我们来看两个例子:
例子 1:
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
例子 2:
输入:head = [2,1], x = 2
输出:[1,2]
思路分析
这道题的关键在于如何有效地重排链表中的节点,使得小于x的节点在前,大于或等于x的节点在后,同时保证每个节点的相对位置不变。我们可以利用两个链表分别存储小于x和大于等于x的节点,最后将两个链表拼接起来。具体步骤如下: