题目:
给你一个链表的头节点 head 和一个特定值 **x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。
解法:
遍历链表,小于x放一个list,其他放一个list,遍历结束后合并2个list
func partition(head *ListNode, x int) *ListNode {
smallTail := new(ListNode)
bigtail := new(ListNode)
smallHead := smallTail
bigHead := bigtail
for head != nil {
if head.Val < x {
smallTail.Next = head
smallTail = smallTail.Next
} else {
bigtail.Next = head
bigtail = bigtail.Next
}
head = head.Next
}
bigtail.Next = nil
smallTail.Next = bigHead.Next
return smallHead.Next
}