概述
题目描述
给定一个链表和一个值x,对它进行分区,使小于x的所有节点都先于大于或等于x的节点。例如,
给定1 - > 4 - > 3 - > 2 - > 5 - > 2和x = 3
返回1 - > 2 - > 2 - > 4 - > 3 - > 5
解题思路
新建两个链表,分别存储小于x的节点和大于等于x的节点
代码示例
class Solution {
public:
ListNode *partition(ListNode *head, int x) {
if(head == NULL) return head;
ListNode *less = new ListNode(0);
ListNode *more = new ListNode(0);
ListNode *endl = less;
ListNode *endm = more;
for (ListNode *p = head; p; p = p->next) {
if (p->val < x) {
endl->next = p;
endl = endl->next;
}
else {
endm->next = p;
endm = endm->next;
}
}
endm->next = NULL;//保证尾结点是NULL结束
endl->next = more->next;//两链表相接
return less->next;
}
};
最后
以上就是生动小甜瓜为你收集整理的链表分区问题的全部内容,希望文章能够帮你解决链表分区问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复