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.
Subscribe to see which companies asked this question
class Solution(object):
def partition(self, head, x):
h = head
new_h = ListNode(0)
new_head = new_h
previous = ListNode(0)
prv = previous
#其中,pre是比x大的,h是比x小的
prv.next = h#~!!!!!!!这句话非常重要!!因为最开始如果没有这句的话,就没有进行初始化,pre就只是一个空的头
while h:
if h.val < x:
new_h.next = h
new_h = h
prv.next = h.next
h = h.next
else:
prv = h
h = h.next
new_h.next = previous.next
return new_head.next

本文介绍了一种链表分区算法,该算法确保所有小于给定值x的节点位于大于或等于x的节点之前,并保持各分区内的原始相对顺序。例如,对于链表1->4->3->2->5->2与x=3,返回1->2->2->4->3->5。
795

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



