分隔链表
分隔链表
问题描述
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/partition-list
思路
借助了两个vector。
- 若是链表为空:直接返回nullptr即可。
- 链表不为空:遍历链表的过程中,将节点值小于x的存到一个vector中,将值大于等于x的存到一个vector中。
- 利用两个vector生成两个链表。
根据不同情况将两个链表拼接起来。
小于x的链表为空,那么返回大于x链表的头节点即可
大于等于x的链表为空,那么返回小于x链表的头节点即可
两个都不空,将大于等于x的链表拼接到小于x的链表的后面
两个链表都为空,即链表为空,在最开始特判过了。