跳到主要内容

Partition List

描述

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.

分析

代码

# Partition List
# 时间复杂度O(n),空间复杂度O(1)
class Solution:
def partition(self, head, x):
left_dummy = ListNode(-1) # 头结点
right_dummy = ListNode(-1) # 头结点

left_cur = left_dummy
right_cur = right_dummy
cur = head
while cur is not None:
if cur.val < x:
left_cur.next = cur
left_cur = cur
else:
right_cur.next = cur
right_cur = cur
cur = cur.next

left_cur.next = right_dummy.next
right_cur.next = None

return left_dummy.next