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

怎么自己在家做网站免费b站推广网站不

怎么自己在家做网站,免费b站推广网站不,java网站开发的书籍,广告公司名字后缀LeetCode-链表-反转链表链表的中间结点 ✏️ 关于专栏:专栏用于记录 prepare for the coding test。 文章目录 LeetCode-链表-反转链表链表的中间结点📝 反转链表🎯题目描述🔍 输入输出示例🧩题目提示🧪AC …

image-20250520203051704

LeetCode-链表-反转链表+链表的中间结点

✏️ 关于专栏:专栏用于记录 prepare for the coding test


文章目录

  • LeetCode-链表-反转链表+链表的中间结点
    • 📝 反转链表
      • 🎯题目描述
      • 🔍 输入输出示例
      • 🧩题目提示
      • 🧪AC
    • 📝 链表的中间结点
      • 🎯题目描述
      • 🔍 输入输出示例
      • 🧩题目提示
      • 🧪AC
    • 🌟 总结
      • ✅ 反转链表
      • ✅ 链表的中间结点

📝 反转链表

🎯题目描述

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

🔗题目链接:反转链表

🔍 输入输出示例

示例 1:

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

示例 2:

img
输入:head = [1,2]
输出:[2,1]

示例 3:

输入:head = []
输出:[]

🧩题目提示

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

🧪AC

简单理解:比如链表为 1→2→3。创建一个新的空链表,然后用头插法依次把节点 1,2,3 插到这个新链表的头部,就得到了链表 3→2→1,这正是反转后的链表。

image-20250521073407374 image-20250521074639304
/*** 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* reverseList(ListNode* head) {ListNode* pre = nullptr;ListNode* cur = head;while(cur){ListNode* nnxt = cur->next;cur->next = pre;pre = cur;cur = nnxt;}return pre;}
};

📝 链表的中间结点

🎯题目描述

给你单链表的头结点 head ,请你找出并返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

🔗题目链接:链表的中间结点

🔍 输入输出示例

示例 1:

img
输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

示例 2:

img
输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

🧩题目提示

  • 链表的结点数范围是 [1, 100]
  • 1 <= Node.val <= 100

🧪AC

可以利用「快慢指针」技巧来找到链表的中间节点。具体做法是定义两个指针:fastslow,其中 fast 每轮移动两步,slow 每轮移动一步。由于 fast 的移动速度始终是 slow 的两倍,当 fast 遍历完整个链表时,slow 恰好位于中间位置。

根据链表长度的不同,需区分以下两种情况:

  • 链表长度为奇数:当 fast 指向最后一个节点时,slow 正好指向链表的中间节点。
  • 链表长度为偶数:当 fast 越过尾节点(即指向 null)时,slow 此时指向的是两个中间节点中的第二个。

因此,我们可以在 fast 到达尾节点或越界时结束循环,并返回 slow 所指的位置作为中间节点。

image-20250521082408182

image-20250521082641153
/*** 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) {ListNode* fast = head;ListNode* slow = head;while(fast&&fast->next){fast = fast->next->next;slow = slow->next;}return slow;}
};

🌟 总结

✅ 反转链表

  • 运用 迭代法,通过 cur 遍历原链表,利用一个 pre 指针记录反转后的链表头。
  • 关键在于每次保存 cur->next,以防链表断裂,然后逐步“头插”到新的链表中。
  • 该方法时间复杂度为 O(n),空间复杂度为 O(1),高效稳定。

✅ 链表的中间结点

  • 使用 快慢指针法(Two Pointers) 快速定位中间结点。
  • fast 每次走两步,slow 每次走一步,fast 走完时,slow 恰好在中点。
  • 可统一处理奇偶长度链表:当 fastnullptrfast->next == nullptr 时停止,返回 slow 即可。

使用 快慢指针法(Two Pointers) 快速定位中间结点。

  • fast 每次走两步,slow 每次走一步,fast 走完时,slow 恰好在中点。
  • 可统一处理奇偶长度链表:当 fastnullptrfast->next == nullptr 时停止,返回 slow 即可。

将两者结合又将产生什么样的火花呢?参加LeetCode-234回文链表,下篇博客我们将一起探究这道题~

http://www.dtcms.com/wzjs/97810.html

相关文章:

  • 国外独立网站建设网络营销推广计划书
  • 怎样用jsp做网站百度seo优化策略
  • 动态网站设计技术福州网站优化
  • 青岛做网站哪家专业百度优化公司
  • 网站右下角广告代码网站推广公司电话
  • 泉州企业网站建设中国进入全国紧急状态
  • 岗厦网站建设青岛关键词优化平台
  • 大学做网站优化营商环境建议
  • 智能网站建设策划永久免费自助建站软件
  • 禹城有做网站网站seo哪家好
  • 做一家网站要多少钱seo快速优化文章排名
  • 美色商城 网站建设seo专业培训
  • 扁平化的网站有哪些申请域名
  • 网站被封了怎么办百度网首页登录入口
  • 变更备案提示 网站主办者冲突seo扣费系统源码
  • 如何给网站做外链企业网站的优化建议
  • 西语网站域名网络广告怎么做
  • 网站系统怎么做手机端百度收录入口
  • ios应用商店下载绍兴seo排名收费
  • 郑州企业网站排名优化公司易搜搜索引擎
  • 网页设计模板html代码音乐天津百度seo推广
  • 做服装批发必逛的网站百度软件下载
  • 网站开发案例分析免费网站制作app
  • 网站开发的缺点排名公式
  • 做pc端网站要成本么免费域名服务器
  • 郑州网站建设公司招聘网站内容优化怎么去优化呢
  • 网站建设动态实训报告淘宝店铺推广
  • 中国防疫政策马上要变化了小红书seo排名帝搜软件
  • 嘉兴备案网站百度seo技术优化
  • 企业信息平台网站官网深圳seo网站推广方案