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

南昌哪个公司做网站好大学毕业网站设计代做

南昌哪个公司做网站好,大学毕业网站设计代做,wordpress淘宝内容,wordpress联盟营销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/596175.html

相关文章:

  • 上海中小网站建设茶叶网络推广方案
  • 简单网站开发实例汇总重庆网站建设网络推广
  • wordpress docx插件seo网站排名优化
  • 如何选择丹阳网站建设seo手机优化方法
  • 网站建设属于无形资产志愿服务网站开发
  • 宝山网站建设宝山广西建设人力资源网
  • 网站建设与维护项目六织梦网站背景
  • 建站之星安装教程wordpress文件存放不同目录下
  • 揭西网站建设自己做的网站能备案
  • 网站添加百度商桥wordpress添加网易云音乐
  • 个人怎么进行网站建设电商运营推广的方式和渠道有哪些
  • 网站制作里的更多怎么做千库网免费素材图库
  • 郑州上街区网站建设公司华夏名网网站管理助手
  • 城市建设的网站 政策法规设计专业招聘信息
  • 大庆工程建设公司网站跨境电商网站平台
  • 木樨园网站建设wordpress密码原理
  • 网站建设共享海南营业执照网上怎么申请
  • 深圳新型材料网站建设加盟创业
  • 普通网站备案wordpress 函数 应用
  • 株洲网站优化找哪家创建公司需要什么条件
  • 织梦 网站名称网站开发书籍推荐
  • 营销网站设计公司排名群辉nas 做网站
  • 青岛建设投资公司网站上海网站备案需要多久
  • 创新创业教育课程网站建设方案自动做网站的ai
  • 沈阳建站模板搭建wordpress 修改语言
  • 大朗网站建设培训宁波企业黄页公司黄页
  • 做外贸哪些网站可以发布产品网站建设是永久使用吗
  • 想开个网站怎么做网站建设优化公司排名
  • 免费ppt成品网站好看的个人网站主页
  • 做消费网站流程试玩平台怎么做网站