编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。
示例:
输入: head = 3->5->8->5->10->2->1, x = 5 输出: 3->1->2->10->5->5->8
使用头插法将所有小于x的node都插在head处.


# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def partition(self, head: ListNode, x: int) -> ListNode:
if not head:
return None
p = head
first = head
while p.next:
if p.next.val < x:
# 使用头插法
temp = p.next
p.next = temp.next
temp.next = first
first = temp
else:
p = p.next
return first
本文介绍了一种链表分割算法,该算法以给定值x为基准,将链表中小于x的所有节点移动到大于或等于x的节点之前,通过头插法实现。示例输入:head=3->5->8->5->10->2->1,x=5;输出:3->1->2->10->5->5->8。
1000

被折叠的 条评论
为什么被折叠?



