我们的宗旨是:使用最简洁的代码,完成AC:)
题目介绍
**题目难度:**Medium
**题目类型:**linked-list | two-pointers
给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入:head = 1->4->3->2->5->2, x = 3
输出:1->2->2->4->3->5
题目分析
该题是一道典型的使用双指针链表遍历题,新建两个链表,分别使用两个变量分别表示头和尾。简单题,不过分描述啦:)
python代码
class Solution:
def partition(self, head: ListNode, x: int) -> ListNode:
h1 = l1 = ListNode(0)
h2 = l2 = ListNode(0)
while head:
if head.val < x:
l1.next = head
l1 = l1.next
else:
l2.next = head
l2 = l2.next
head = head.next
l2.next = None
l1.next = h2.next
return h1.next