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

leetcode 148 排序链表 归并终极形态

还是熟悉的排序,只是换成了链表。要求O(NlogN)复杂度,我们采用归并排序来解决问题,保证每个子问题都是对应的线性复杂度。
技巧1:每次处理子问题,遍历只有一遍,不能遍历子问题数目 * n遍,否则会超时
技巧2:断链:和普通排序不同的是,由于指针随时在移动,不断链很容易出现死循环,以及无法处理的情况,因此我们要断链后,再进行子问题排序。
技巧3:细节,剩余的就是细节了,实在是太难处理,二刷再来研究吧。

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */classSolution{public:ListNode*sortList(ListNode*head){ListNode*dummy=newListNode(),*last=dummy,*tmp=head;dummy->next=head;intn=0;while(tmp){n++;tmp=tmp->next;}for(intstep=1;step<n;step*=2){ListNode*l=dummy->next;last=dummy;for(intj=0;j<n;j+=step*2){// mid 是第二段开始位置ListNode*mid;tmp=l;for(inti=0;i<step-1;i++){if(tmp)tmp=tmp->next;elsebreak;}if(!tmp||!tmp->next)break;mid=tmp->next;tmp->next=nullptr;tmp=mid;// printf("mid=%d\n", mid->val);// tailfor(inti=0;i<step-1;i++){if(tmp->next)tmp=tmp->next;elsebreak;}ListNode*nxt=nullptr;if(tmp->next)nxt=tmp->next;tmp->next=nullptr;// printf("tail=%d\n", tmp->val);// 排序while(l&&mid){if(l->val<=mid->val)last->next=l,l=l->next;elselast->next=mid,mid=mid->next;last=last->next;}while(l){last->next=l,l=l->next;last=last->next;}while(mid){last->next=mid,mid=mid->next;last=last->next;}last->next=nxt;// l和lastl=nxt;}//tmp=dummy->next;// while(tmp)printf("%d ", tmp->val), tmp = tmp->next;// printf("\n");}returndummy->next;}};
http://www.jsqmd.com/news/545117/

相关文章:

  • PySceneDetect终极指南:5分钟掌握智能视频场景检测与分割
  • PyTorch 线程亲和性测试:CUDA 上下文绑定的惊人代价
  • 科研加速器:GLM-4.7-Flash驱动OpenClaw自动整理文献综述
  • OPC UA与Modbus融合:传统工业设备升级的智能桥梁
  • EEGNet实战:用MNE和TensorFlow搞定脑电信号分类(附完整代码)
  • 手把手教你用Docker Compose搭建Odoo开发环境:从零到一键启动
  • 智能文献管理全面指南:从学术研究痛点到高效解决方案
  • 腾讯应用宝空包apk签名
  • NPU vs GPU:为什么你的AI项目需要专用神经网络处理器?
  • 老旧电脑也能流畅运行3D应用?DXVK让Direct3D性能提升的秘密
  • NaViL-9B开源模型实战:媒体内容审核平台图文敏感信息识别案例
  • 如何用stressapptest进行高效内存和磁盘压力测试?实战案例分享
  • 什么是国内短效代理IP?核心适用场景解析
  • 文昌住宿怎么选:豪华酒店、经济酒店与特色民宿的横向对比 - 速递信息
  • uniapp微信小程序swiper高度自适应
  • OpCore-Simplify终极指南:如何用一款工具让黑苹果配置变得如此简单
  • OpenClaw+GLM-4.7-Flash:自动化社交媒体发布
  • OpCore Simplify:零基础黑苹果配置的智能助手
  • 短信营销HTTP接口开发规范:基于RESTful/HTTP协议的营销短信API调用实现方案
  • 2026年金属复合板/冰火板/隧道板/无机预涂板厂家推荐:中城科工新材料有限公司全系板材供应 - 品牌推荐官
  • Gemma-3 Pixel Studio落地案例:农业病害叶片图→症状识别→防治建议
  • 西数硬盘盘片损坏数据还能恢复吗?杭州专业二次开盘数据恢复中心推荐
  • 3步构建智能自动化:Agent-S CI/CD工作流实战指南
  • 别只盯着答案!用2022蓝桥杯Java B组真题,带你吃透“最少刷题数”背后的中位数思想
  • 电机无感控制在零低速工况下就像玩捉迷藏——转子位置得靠特殊手段来捕捉。高频方波电压注入法这两年挺火,咱们今天拆开一个实际落地的仿真模型看看门道
  • 7个进阶技巧:Juice CSS内联工具完全掌握
  • 2026年工程机械链条厂家推荐:泉州市华征工程机械有限公司E349/E326/SK350等全型号供应 - 品牌推荐官
  • PCB画板时的操作——扇出
  • OpCore-Simplify技术解构:自动化EFI构建的底层逻辑与实践指南(2024深度版)
  • Vivado时序约束实战:get_clocks命令的5个高频用法与避坑指南