【题目】 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个 整 数pivot
实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot 的节点,中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。 除这个要求外,对调整后的节点顺序没有更多的要求。
例如:链表9->0->4->5- >1,pivot=3。
调整后链表可以是1->0->4->9->5,也可以是0->1->9->5->4。
总 之,满 足左部分都是小于3的节点,中间部分都是等于3的节点(本例中这个部 分为空),右部分都是大于3的节点即可。
对某部分内部的节点顺序不做要求
def list_parition(head,privote):
if head == None or head.next.next == None:
return head
cur = head
nodeArr = []
while cur != None:
nodeArr.append(cur)
cur = cur.next
partition(nodeArr,privote)
for i in range(1,n-1):
nodeArr[i-1] = nodeArr[i]
nodeArr[-1].next = None
return nodeArr[0]
def partition(L,num):
small = -1
index = 0
big = len(L)
while index < big:
if L[index] < num:
small +=1
swap(L,index,small)
index +=1
elif L[index] == num:
index +=1
else:
big -=1
swap(L,index,big)
def swap(L,i,j):
tmp = L[i]
L[i] = L[j]
L[j] = tmp