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