代码随想录day4

server/2025/1/31 20:12:43/

24.两两交换链表:注意虚拟头节点的使用

ListNode* swapPairs(ListNode* head) {ListNode* dummy = new ListNode();dummy->next = head;ListNode* current = dummy;while(current->next != nullptr && current->next->next != nullptr){ListNode* tmp = current->next;ListNode* tmp1 = current->next->next->next;current->next = current->next->next;current->next->next = tmp;current->next->next->next = tmp1;current = current->next->next;}return dummy->next;}

19.删除链表中的倒数第N个结点:注意使用快慢指针,以及中间的间隔n的判断

ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummy = new ListNode();dummy->next = head;ListNode* fast = dummy;ListNode* slow = dummy;//先移动fast指针领先slow n+1 个位置while(n-- && fast != nullptr){fast = fast->next;}fast = fast->next;//同时移动fast,slow到fast抵达最后while(fast != nullptr){fast = fast->next;slow = slow->next;}//删除第N个需要用到的是第N-1个节点ListNode* tmp = slow->next;slow->next = tmp->next;delete(tmp);return dummy->next;}

面试题02.07链表相交://理解链表相交不是值相等,而是指向同一块区域

ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* listA = headA;ListNode* listB = headB;int lenA = 0, lenB = 0;while(listA != nullptr){listA = listA->next;lenA++;}while(listB != nullptr){listB = listB->next;lenB++;}if(lenB > lenA){swap(headA, headB);swap(lenA, lenB);}int gap = lenA - lenB;listA = headA;listB = headB;while(gap--){listA = listA->next;}while(listA != nullptr && listB != nullptr){if(listA == listB){return listA;}else{listA = listA->next;listB = listB->next;}}return nullptr;}

142.环形链表II://需理解为甚么fast比slow快1就能在环中相遇,什么时候fast追上slow,以及追上后如何获取环的入口位置

ListNode *detectCycle(ListNode *head) {ListNode* fast = head;ListNode* slow = head;while(fast != nullptr && fast->next != nullptr){fast = fast->next->next;slow = slow->next;//找到fast与slow在环中的相遇点if(fast == slow){ListNode* left = head;ListNode* right = fast;while(left != nullptr && right != nullptr){if(left == right){return left;}left = left->next;right = right->next;}}}return nullptr;}


http://www.ppmy.cn/server/163871.html

相关文章

计算机网络之计算机网络协议、接口、服务等概念

一、计算机网络协议 定义: 计算机网络协议是实现计算机网络中不同计算机系统之间的通信所必须遵守的通信规则的集合。这些规则规定了数据如何在网络中传递、处理的格式、同步问题等。 要素: 语法:数据与控制信息的结构或格式。 语义&#xf…

图漾相机——Sample_V1示例程序

文章目录 1.SDK支持的平台类型1.1 Windows 平台1.2 Linux平台 2.SDK基本知识2.1 SDK目录结构2.2 设备组件简介2.3 设备组件属性2.4 设备的帧数据管理机制2.5 SDK中的坐标系变换 3.Sample_V1示例程序3.1 DeviceStorage3.2 DumpCalibInfo3.3 NetStatistic3.4 SimpleView_SaveLoad…

【C语言】static关键字的三种用法

【C语言】static关键字的三种用法 C语言中的static关键字是一个存储类说明符,它可以用来修饰变量和函数。static关键字的主要作用是控制变量或函数的生命周期和可见性。以下是static关键字的一些主要用法和含义: 局部静态变量: 当static修饰…

Git进阶之旅:.gitignore 文件

介绍: 在项目中,我们可能一起提交多个文件 git add -A:提交所有变化git add -u:提交被修改(modified) 和被删除文件(deleted) 文件,不包括新文件(new) git add .:提交新文件(new) 和被修改文件(modif…

Blazor-@bind

数据绑定 带有 value属性的标记都可以使用bind 绑定&#xff0c;<div>、<span>等非输入标记&#xff0c;无法使用bind 指令的&#xff0c;默认绑定了 onchange 事件&#xff0c;onchange 事件是指在输入框中输入内容之后&#xff0c;当失去焦点时执行。 page &qu…

基于SpringBoot的假期周边游平台的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

灰色预测模型

特点&#xff1a; 利用少量、不完全的信息 预测的是指数型的数值 预测的是比较近的数据 灰色生成数列原理&#xff1a; 累加生成&#xff1a; 累减生成&#xff1a;通过累减生成还原成原始数列。 加权相邻生成&#xff1a;&#xff08;会更接近每月中旬&#xff0c;更推荐…

DeepSeek 证明了什么

AI 这个词现在很火爆&#xff0c;但 AI 是新技术吗&#xff1f;不认为 AI 是一个新的技术&#xff0c;其实这些概念的提出都是在几十年前的事情了。 受限于当时的计算机计算能力&#xff0c;AI 很多概念都来源于人工神经网络&#xff0c;《人工智能》这门课程早在几十年前就是…