当前位置: 首页 > news >正文

【力扣】86. 分隔链表

86. 分隔链表

题目描述

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你应当 保留 两个分区中每个节点的初始相对位置。

示例 1:

  • 输入:head = [1,4,3,2,5,2], x = 3
  • 输出:[1,2,2,4,3,5]

示例 2:

  • 输入:head = [2,1], x = 2
  • 输出:[1,2]

提示:

  • 链表中节点的数目在范围 [0, 200] 内
  • -100 <= Node.val <= 100
  • -200 <= x <= 200

解题方法

直接法

遍历原始链表,并维护两个链表,分别保存比 x 大和比 x 小的节点

  • C 语言
/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* partition(struct ListNode* head, int x) {struct ListNode* str1 = malloc(sizeof(struct ListNode));struct ListNode* str2 = malloc(sizeof(struct ListNode));struct ListNode* str1_h = str1;struct ListNode* str2_h = str2;while (NULL != head) {if (head->val < x) {str1->next = head;str1 = str1->next;} else {str2->next = head;str2 = str2->next;}head = head->next;}str2->next = NULL;str1->next = str2_h->next;return str1_h->next;
}
复杂度分析
时间复杂度为 O(n),其中 n 是原链表的长度。
空间复杂度为 O(1)。
http://www.lryc.cn/news/342949.html

相关文章:

  • 海云安受邀参加诸子云 4.27南京「金融互联网」私董会
  • docker操作使用注意事项
  • Leetcode—163. 缺失的区间【简单】Plus
  • Ansible自动化运维工具 - playbook 剧本编写
  • Web前端一套全部清晰 ⑥ day4 CSS.2 复合选择器、CSS特性、背景属性、标签的显示模式
  • Linux 认识与学习Bash——3
  • 匠心精神与创新力量:构筑网络安全的新防线
  • 接口信息解析
  • scikit-learn实现单因子线性回归模型
  • 【笔记】Anaconda命令提示符(Anaconda Prompt)操作
  • Unity射击游戏开发教程:(12)使用后处理
  • python:机器学习特征优选
  • 花一个月时间为 vue3 重制了 vue-styled-components
  • API接口调用|京东API接口|淘宝API接口
  • pgsql和mysql比较
  • 【太赫兹偏振保持亚波长波导链路功率预算分析】
  • json-server的安装和使用
  • Unity射击游戏开发教程:(10)创建主界面
  • Microsoft 365 for Mac v16.84 office365全套办公软件
  • 交易复盘-20240507
  • 面试题: malloc与new的区别
  • 欧鹏RHCE 第五次作业
  • 数仓分层——ODS、DW、ADS
  • 计算机视觉——OpenCV Otsu阈值法原理及实现
  • 个人IP打造孵化运营产业链商业计划书
  • R语言:卡方检验
  • 基于51单片机的电子钟秒表LCD1602仿真设计( proteus仿真+程序+设计报告+原理图+讲解视频)
  • latex参考文献引用网址,不显示网址问题
  • 详细分析Mybatis与MybatisPlus中分页查询的差异(附Demo)
  • nginx--tcp负载均衡