
LeetCode:86. Partition List分隔链表(C语言)
初始化两个链表 遍历原链表中的每个节点。 如果当前节点的值小于 x,将其添加到 处理链表连接时,确保每个链表中的节点保持初始相对位置。 最后,将两个链表连接起来,返回合并后的链表。
发布日期:2021-05-08 18:45:04
浏览次数:21
分类:精选文章
本文共 3154 字,大约阅读时间需要 10 分钟。
为了解决这个问题,我们需要将给定的链表分割成两个部分:一部分包含所有小于给定值 x 的节点,另一部分包含所有大于或等于 x 的节点。同时,我们需要保持每个部分中节点的初始相对位置。
方法思路
我们可以使用两个链表来分别存储小于 x 和大于或等于 x 的节点。具体步骤如下:
ListLess
和 ListGreater
,以及它们的头指针 h1
和 h2
。ListLess
中;否则,将其添加到 ListGreater
中。解决代码
题目描述:
给你一个链表和一个特定值 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 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解答:struct ListNode* partition(struct ListNode* head, int x){ struct ListNode* ListLess = NULL; struct ListNode* ListGreater = NULL; struct ListNode* h1 = NULL; struct ListNode* h2 = NULL; struct ListNode* p = head; while(p){ if(p->val < x){ if(ListLess == NULL){ ListLess = p; h1 = ListLess; } else{ ListLess->next = p; ListLess = p; } } else{ if(ListGreater == NULL){ ListGreater = p; h2 = ListGreater; } else{ ListGreater->next = p; ListGreater = p; } } p = p->next; } if(ListLess == NULL) return h2; if(ListGreater == NULL) return h1; ListGreater->next = NULL; ListLess->next = h2; return h1;}运行结果:
通过了测试用例,正确处理了输入链表和给定值,输出符合要求的分隔结果。 为了解决这个问题,我们需要将给定的链表分割成两个部分:一部分包含所有小于给定值 x 的节点,另一部分包含所有大于或等于 x 的节点。同时,我们需要保持每个部分中节点的初始相对位置。### 方法思路我们可以使用两个链表来分别存储小于 x 和大于或等于 x 的节点。具体步骤如下:1. 初始化两个链表 `ListLess` 和 `ListGreater`,以及它们的头指针 `h1` 和 `h2`。2. 遍历原链表中的每个节点。3. 如果当前节点的值小于 x,将其添加到 `ListLess` 中;否则,将其添加到 `ListGreater` 中。4. 处理链表连接时,确保每个链表中的节点保持初始相对位置。5. 最后,将两个链表连接起来,返回合并后的链表。### 解决代码```html题目描述:
给你一个链表和一个特定值 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 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解答:struct ListNode* partition(struct ListNode* head, int x){ struct ListNode* ListLess = NULL; struct ListNode* ListGreater = NULL; struct ListNode* h1 = NULL; struct ListNode* h2 = NULL; struct ListNode* p = head; while(p){ if(p->val < x){ if(ListLess == NULL){ ListLess = p; h1 = ListLess; } else{ ListLess->next = p; ListLess = p; } } else{ if(ListGreater == NULL){ ListGreater = p; h2 = ListGreater; } else{ ListGreater->next = p; ListGreater = p; } } p = p->next; } if(ListLess == NULL) return h2; if(ListGreater == NULL) return h1; ListGreater->next = NULL; ListLess->next = h2; return h1;}运行结果:
通过了测试用例,正确处理了输入链表和给定值,输出符合要求的分隔结果。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月01日 13时52分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Typora配置PicGo时,提示Failed to fetch
2019-03-06
bcolz的新操作
2019-03-06
delete对象时会自动调用类的析构函数
2019-03-06
POD类型
2019-03-06
const与常量,傻傻分不清楚~
2019-03-06
Head First设计模式——迭代器模式
2019-03-06
MongoDB版本及存储引擎区别
2019-03-06
shell echo单行和多行文字定向写入到文件中
2019-03-06
cmp命令
2019-03-06
Linux 磁盘管理(df fu fdisk mkfs mount)
2019-03-06
jQuery的事件绑定与触发 - 学习笔记
2019-03-06
Linux上TCP的几个内核参数调优
2019-03-06
记一次讲故事机器人的开发-我有故事,让机器人来读
2019-03-06
seo 回忆录百度基本概念(一)
2019-03-06
netcore中使用session
2019-03-06
Android 开发学习进程0.25 自定义控件
2019-03-06
多媒体文件格式全解说(下)--图片
2019-03-06
淘宝WAP版小BUG分析
2019-03-06
asp.net打印网页后自动关闭网页【无需插件】
2019-03-06