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

408算法题leetcode--第14天

92. 反转链表 II

  • 92. 反转链表 II
  • 思路:头插法
  • 时间:O(n);空间:O(1)
/*** 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) {}* };*/
class Solution {
public:ListNode* reverseBetween(ListNode* head, int left, int right) {// 头插法if(head == nullptr) return nullptr;ListNode* dummy_head = new ListNode(-1, head);ListNode* p = dummy_head;for(int i = 0; i < left - 1; i++){p = p->next;}ListNode* cur = p->next;ListNode* next = nullptr;for(int i = 0; i < right - left; i++){next = cur->next;cur->next = next->next;next->next = p->next;p->next = next;}return dummy_head->next;}
};

21. 合并两个有序链表

  • 21. 合并两个有序链表
  • 时间:O(n+m);空间:O(1)
/*** 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) {}* };*/
class Solution {
public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if(list1 == nullptr) return list2;if(list2 == nullptr) return list1;ListNode* p = list1, *q = list2;ListNode* dummy_head = new ListNode(-1);ListNode* t = dummy_head;while(q && p){if(q->val <= p->val){t->next = q;q = q->next;} else {t->next = p;p = p->next;}t = t->next;}t->next = q == nullptr ? p : q;return dummy_head->next;}
};

24. 两两交换链表中的节点

  • 24. 两两交换链表中的节点
  • 思路:类似之前的头插法
  • 时间:O(n);空间:O(1)
/*** 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) {}* };*/
class Solution {
public:ListNode* swapPairs(ListNode* head) {if(head == nullptr) return head;ListNode* dummy_head = new ListNode(-1, head);ListNode* pre = dummy_head, *cur = dummy_head->next;ListNode* next = nullptr;while(cur && cur->next){next = cur->next;// 头插法cur->next = next->next;next->next = pre->next;pre->next = next;// 向后移动pre = cur;cur = cur->next;}return dummy_head->next;}
};

876. 链表的中间结点

  • 876. 链表的中间结点
  • 思路:快慢指针
  • 时间:O(n);空间:O(1)
/*** 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) {}* };*/
class Solution {
public:ListNode* middleNode(ListNode* head) {// 快慢指针:快指针走2步,慢指针走1步ListNode* fast = head, *slow = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;}return slow;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【CSS】变量的声明与使用
  • 【Linux基础IO】深入解析Linux基础IO缓冲区机制:提升文件操作效率的关键
  • Android数据序列化总结
  • Redis Bigkey
  • 从零到爆款:利用自养号测评打造Temu、亚马逊热销产品
  • 蠕虫病毒(网络安全小知识)
  • 【权限控制】一个通用的用户权限控制架构设计方案,可以适用于大多数应用场景
  • [数组计数法]#116. 开会时间
  • 戏曲多多 1.0.6.0 专为电视端设计的戏曲与生活内容APP,同样适用于安卓手机,方便老年人使用
  • 学习C4模型的新网站
  • 传奇开服需要多少钱?传奇开服服务器是自己买还是租?
  • Unity DOTS系列之托管/非托管Component的区别与性能分析
  • 一起操作一遍git,还不会你找我
  • tensorflow算子调用示例(MINIST)
  • 【项目实战】如何在项目中基于 Spring Boot Starter 开发简单的 SDK
  • Bootstrap JS插件Alert源码分析
  • CentOS 7 修改主机名
  • docker python 配置
  • export和import的用法总结
  • HTTP那些事
  • iOS 系统授权开发
  • Java-详解HashMap
  • Js基础——数据类型之Null和Undefined
  • nfs客户端进程变D,延伸linux的lock
  • node.js
  • TypeScript迭代器
  • Yii源码解读-服务定位器(Service Locator)
  • 从零搭建Koa2 Server
  • 官方解决所有 npm 全局安装权限问题
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 讲清楚之javascript作用域
  • 前端_面试
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 收藏好这篇,别再只说“数据劫持”了
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 一道闭包题引发的思考
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • python最赚钱的4个方向,你最心动的是哪个?
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #Linux(权限管理)
  • #QT(串口助手-界面)
  • #vue3 实现前端下载excel文件模板功能
  • (0)Nginx 功能特性
  • (day18) leetcode 204.计数质数
  • (java)关于Thread的挂起和恢复
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (八)Spring源码解析:Spring MVC
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (六)DockerCompose安装与配置
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (三)Honghu Cloud云架构一定时调度平台
  • (十三)MipMap
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)