反转链表||动静态链接

反转链表 II

第一种方法:使用数组顺序记录区间内节点的地址,然后双指针双向向内遍历节点地址,逐步交换节点存储数值。时间复杂度为on、空间复杂度为on

class Solution {
public:ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode *pi = head;int n = 0;vector<ListNode*> lis;while(head){n++;if(n>=left&&n<=right){lis.emplace_back(head);}head = head->next;}int i = 0,j = lis.size()-1;while(i<j){swap(lis[i++]->val,lis[j--]->val);}return pi;}
};

第二种方法:记录反转开始节点的前驱节点方便连接反转后的pre位置(结论:反转链表完成后cur处于空位,也就是反转后pre会处于right位置,可以直接使用反转开始处的前驱节点连接pre)那么pre处于right,cur处于right+1,记录反转开始处的节点用于连接cur位置,反转结束,如果left为1,也就是说是从头翻转的,那反转开始处的前驱节点为空,所以当这种情况时直接把pre设置为head,最后返回head。

class Solution {
public:ListNode* reverseBetween(ListNode* head, int left, int right) {// 边界情况检查if (!head || left == right) return head;ListNode *pre = nullptr, *cur = head;// 定位到 left 节点及其前驱节点for (int i = 1; cur && i < left; i++) {pre = cur;cur = cur->next;}// 保存反转部分的前驱节点ListNode *preLeft = pre, *postRight = cur;// 反转 [left, right] 区间的节点ListNode *prev = nullptr;for (int i = left; cur && i <= right; i++) {ListNode *next = cur->next;cur->next = prev;prev = cur;cur = next;}// 连接反转后的部分if (preLeft) {preLeft->next = prev;} else {// 如果 left 是 1,说明反转的是头部部分head = prev;}postRight->next = cur;return head;}
};

静态链接的特点是什么? 

静态链接:

        静态链接是程序和所有代码和代码所依赖的库直接链接到可执行文件的过程,在程序编译时,所有需要的库文件和目标文件都会在编译过程中合并。

        特点:执行时不依赖外部库、可执行文件较大、运行时效率高、因为是静态的所以无法共享库的更新、可移植性好、编译时间较长。

动态链接的特点是什么?

动态链接:

        动态链接是指在程序运行时,将程序所依赖的库文件(如 .dll.so 文件)动态加载到内存中。这意味着程序在编译时并不包含所有库代码,而是依赖外部的共享库。

        特点:运行时加载、较小的可执行文件、节省内存、支持共享库更新、动态加载库文件需要额外开销、依赖外部库(如果缺少必要的库文件程序无法运行)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34765.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot入门:如何新建SpringBoot项目(保姆级教程)

在本文中&#xff0c;我们将演示如何新建一个基本的 Spring Boot 项目。写这篇文章的时候我还是很惊讶的&#xff0c;因为我发现有些java的初学者&#xff0c;甚至工作10年的老员工居然并不会新建一个SpringBoot项目&#xff0c;所以特别出了一篇文章来教大家新建一个SpringBoo…

分代ZGC介绍

背景 在JDK 11中作为实验性功能推出的ZGC&#xff08;JEP 333: ZGC: A Scalable Low-Latency Garbage Collector &#xff09;&#xff0c;经过10个版本的迭代&#xff0c;终于在24年9月GA的JDK 23中将分代模式调整为默认模式&#xff08;JEP 474: ZGC: Generational Mode by …

Flume基础概念

目录 作用组件构成ClientFlowAgentSourceSinkEvent 和Log4j的区别与定位事务传出流程输入到sourcesource端输入Channel 接收输入到SinkSink输出 作用 Flume可以从各种来源&#xff08;如日志文件、消息队列、网络数据、文件系统、数据库等&#xff09;收集数据&#xff0c;并将…

解决IDEA的easycode插件生成的mapper.xml文件字段之间逗号丢失

问题 easycode插件生成的mapper.xml文件字段之间逗号丢失&#xff0c;如图 解决办法 将easycode(在settings里面的othersettings)设置里面的Template的mapper.xml.vm和Global Config的mybatisSupport.vm的所有$velocityHasNext换成$foreach.hasNext Template的mapper.xml.vm(…

策略模式实战 - 猜拳游戏

**可以整体的替换一套算法&#xff0c;这就是策略模式。**这样对于同一个问题&#xff0c;可以有多种解决方案——算法实现的时候&#xff0c;可以通过策略模式来非常方便的进行算法的整体替换&#xff0c;而各种算法是独立封装好的&#xff0c;不用修改其内部逻辑。 具体的实…

漫画之家Spring Boot:漫画资源的个性化推荐

4 系统设计 4.1系统设计主要功能 通过市场调研及咨询研究&#xff0c;了解了用户及管理者的使用需求&#xff0c;于是制定了管理员和用户等模块。功能结构图如下所示&#xff1a; 图4-1系统功能结构图 4.2数据库设计 4.2.1数据库设计规范 数据可设计要遵循职责分离原则&#…

C++:AVL树

文章目录 一、AVL树的概念二、AVL树的实现1、AVL树的节点2、 AVL的插入的过程3、平衡因子的更新 三、旋转1、右单旋2、左单旋3、右左双旋4、右左双旋 四、AVL树平衡检测五、AVL树查找 一、AVL树的概念 二、AVL树的实现 1、AVL树的节点 key,vaule的二叉搜索树&#xff0c;需要…

Vscode插件 :用于生成文件头部注释和函数注释

最近找到了一个好用的vscode生成注释的插件----koroFileHeader 1.在拓展中搜索&#xff0c;并且安装 2.找到setting.json 设置模板 点击ctrlp(windows and linus),commandp(mac) 输入 > Open Settings 点击第一个选项 并且用以下代码进行覆盖 // 头部注释 "file…

知从科技闪耀汽车智能底盘大会:共探软件安全新篇章

在汽车科技蓬勃发展的浪潮中&#xff0c;智能底盘技术正成为引领行业变革的关键力量。11月27日-28日&#xff0c;盖世汽车 2024 第四届汽车智能底盘大会盛大召开&#xff0c;上海知从科技有限公司受邀出席此次盛会&#xff0c;与众多汽车领域的精英齐聚一堂&#xff0c;共话智能…

LabVIEW密码保护与反编译的安全性分析

在LabVIEW中&#xff0c;密码保护是一种常见的源代码保护手段&#xff0c;但其安全性并不高&#xff0c;尤其是在面对专业反编译工具时。理论上&#xff0c;所有软件的反编译都是可能的&#xff0c;尽管反编译不一定恢复完全的源代码&#xff0c;但足以提取程序的核心功能和算法…

ABAP 类与对象 EXCEPTIONS与RAISE

文章目录 ABAP 类与对象 EXCEPTIONS与RAISE系统示例代码执行结果RAISE的系统文档测试 ABAP 类与对象 EXCEPTIONS与RAISE 系统示例 代码 CLASS cls DEFINITION.PUBLIC SECTION.CLASS-METHODS meth EXCEPTIONS exc. ENDCLASS.CLASS cls IMPLEMENTATION.METHOD meth....RAISE ex…

接第二部分 Advanced Learning Algorithms

接第二部分 Advanced Learning Algorithms 文章目录 接第二部分 Advanced Learning AlgorithmsMachine learning development process(机器学习开发的迭代)Iterative loop of ML development错误分析(error analysis)添加数据(Adding data)迁移学习&#xff1a;使用其他任务中的…

AI新动向:豆包文生图升级,文心一言领先市场

在今日的AI资讯中&#xff0c;我们关注到了几个重要的行业动态&#xff0c;其中包括字节跳动AI助手豆包的功能升级&#xff0c;以及百度文心一言在生成式AI市场的领先地位。 字节跳动旗下的智能AI助手豆包近期对其文生图能力进行了显著提升&#xff0c;用户现在可以通过一键操…

力扣54.螺旋矩阵

题目描述 题目链接54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a;…

【第 1 章 初识 C 语言】1.10 - 1.11 本书的组织结构、本书的约定

目录 1.10 本书的组织结构 1.11 本书约定 1.11.1 字体 1.11.2 程序输出 特殊的击键 本书使用的系统 读者的系统 1.11.3 特殊元素 1.10 本书的组织结构 本书采用多种方式编排内容&#xff0c;其中最直接的方法是介绍 A 主题的所有内容、介绍 B 主题的所有内容&#xff0…

# 06_Python基础到实战一飞冲天(三)-python面向对象(六)--类属性和类方法和单例

06_Python基础到实战一飞冲天&#xff08;三&#xff09;-python面向对象&#xff08;六&#xff09;–类属性和类方法和单例 一、类属性-05-使用对象名类属性赋值语句会创建实例属性 1、使用对象名访问类属性的问题注意 如果使用 对象.类属性 值 赋值语句&#xff0c;只会…

【目标跟踪】DUT Anti-UAV数据集详细介绍

DUT Anti-UAV数据集是大连理工大学的团队公开的数据集&#xff08;DUT是他们学校的简称&#xff09;&#xff0c;其中包括了两个子数据集&#xff1a;目标检测和目标跟踪&#xff08;也就是说&#xff0c;目标检测和目标跟踪都可以用这个数据集&#xff09;。该数据集为可见光模…

★ 数据结构 ★ 排序

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将和大家一起学习数据结构中的各种排序~ ​❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页&#xff1a;椎名澄嵐-CSDN博客 数据结构专栏&#xff1a;https://blog.csdn.net/2302_80328146/categ…

c语言基础三:运算符和表达式

一、常用的运算符分类 运算符类型 作用 算术运算符 用于处理四则运算 赋值运算符 用于将表达式的值赋给变量 比较运算符 用于表达式的比较&#xff0c;并返回一个真值或假值 逻辑运算符 用于根据表达式的值返回真值或假值 位运算符 用于处理数据的位运算 s…

如何通过金蝶云星空高效集成销售出库单

金蝶云星空数据集成案例分享&#xff1a;销售出库单-&#xff08;分销&京东&唯品&虚拟除外&#xff09;手表汇总 在企业信息化系统中&#xff0c;数据的高效流转和准确对接是业务运作的关键。本文将聚焦于一个具体的系统对接集成案例&#xff0c;即如何将金蝶云星…