思路
通过数组法,一个数组存储小于x的节点的元素,一个数组存储大于等于x的节点的对应的元素,然后我们将两个数组合并在一起。使用虚拟节点的方式创建新链表,最后返回头节点即可。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
if not head:
return head
nums1=[]
cur=head
while cur:
if cur.val<x:
nums1.append(cur.val)
cur=cur.next
nums2=[]
cur=head
while cur:
if cur.val>=x:
nums2.append(cur.val)
cur=cur.next
for i in range(len(nums2)):
nums1.append(nums2[i])
#合并到一起了,准备新建
dummy=ListNode()
cur=dummy
for i in range(len(nums1)):
p=ListNode(nums1[i])
cur.next=p
cur=p
return dummy.next