分隔链表链接
最近没有更新是换工作,换房子去了,有点忙,抱歉
# 分隔链表
"""
给你一个链表的头节点head和一个特定值x ,请你对链表进行分隔,使得所有小于x的节点都出现在大于或等于x的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]
"""
"""
这道题注意一下相对位置比较重要,不要想着在一个链表中去移动,因为没法移动
原因就是这个链表对象没有前置节点对象的保存,如果有就可以一个链表移动
所以说就是两个链表:一个保存比x小的 一个保存大于等于x的 只要保存必然是相对位置
最后连接 因为两个链表后面都有0 做了一些处理 不这样写也可以。
"""
# 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, x):
if head is None or head.next is None:
return head
t1, t2 = ListNode(), ListNode() # head = [1,4,3,2,5,2]
res1, res2 = ListNode(), ListNode()
res1.next, res2.next = t1, t2
while head:
if head.val >= x:
t1.val = head.val
t1.next = ListNode()
t1 = t1.next
else:
t2.val = head.val
t2.next = ListNode()
t2 = t2.next
head = head.next
t2.val = res1.next.val
t2.next = res1.next.next
temp = res2.next
while temp:
if temp.next.next is None:
temp.next = None
break
temp = temp.next
return res2.next