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

济南手机建站价格龙岩天宫山是什么菩萨

济南手机建站价格,龙岩天宫山是什么菩萨,张家港苏州网站建设,做网站服务器多大的好正如标题所说,本文会图文详细解析三道单链表OJ题,分别为: 反转链表 (简单) 链表的中间节点 (简单) 链表的回文结构 (较难) 把他们放在一起讲的原因是: 反转链…

正如标题所说,本文会图文详细解析三道单链表OJ题,分别为:

  1.  反转链表 (简单)
  2.  链表的中间节点 (简单)
  3.  链表的回文结构 (较难)

把他们放在一起讲的原因是: 反转链表  链表的中间节点  链表的回文结构 的基础

为什么这样说?请往下看:

目录

1. 反转链表

做题思路

画图理解

代码实现

2. 链表的中间节点

做题思路

画图理解

代码实现

3. 链表的回文结构

做题思路

画图理解

代码实现


1. 反转链表

LeetCode链接:206. 反转链表 - 力扣(LeetCode)

💭做题思路

  • 遍历链表,改变每个节点的链接方向,使其链向前节点
  • 如果是第一个节点,使其链向 NULL 

这里需要3个指针:

  •  cur 指向当前需要修改的节点
  •  prev 记录 cur 的前一个节点, cur 要链向此节点
  •  next 记录 cur 的后一个节点,避免 cur 改变链接方向后找不到下个节点

🎨画图理解

✍️代码实现

struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* cur = head;struct ListNode* prev = NULL;while (cur != NULL){struct ListNode* next = cur->next;cur->next = prev;prev = cur;cur = next;}return prev;
}

最后提交代码试试:

完美通过,本题并不难,来搞下一题


2. 链表的中间节点

LeetCode链接:876. 链表的中间结点 - 力扣(LeetCode)

💭做题思路

  • 快慢指针
  • 搞两个指针,一个叫 fast ,一个叫 slow 
  • 快指针 fast 一次走两步
  • 慢指针 slow 一次走一步
  • fast 走到 NULL 时, slow 恰好在中间,此时 slow 指向的节点就是中间节点

🎨画图理解

✍️代码实现

struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow = head;struct ListNode* fast = head;while (fast != NULL && fast->next != NULL){slow = slow->next;fast = fast->next->next;}return slow;
}

提交代码:

这道题也很简单,主要就是快慢指针的思路,第一次接触的话可能想不到这种方法

接下来就是本文重点了,前面这些只是开胃小菜


3. 链表的回文结构

牛客链接:链表的回文结构_牛客题霸_牛客网 (nowcoder.com)

💭做题思路

1. 找到中间节点

2. 反转中间节点及其之后的链表

3. 此时把链表分为两段:

  • 未反转的链表为一段,用指针 list1 指向这段链表的头节点
  • 反转过的链表为另一段,用指针 list2 指向这段链表的头节点

4. 比较 list1 list2 节点的值是否相等

  • 如果相等, list1 list2 同时往后走,去比较下一组数据
  • 如果不相等,说明链表不是回文结构,返回 false 

5. 当 list2 走到 NULL 处时,说明此链表是回文结构,返回 true 

🎨画图理解

可以看到本题需要调用之前写过的代码

这就是为什么我说前两道题是本题的基础

✍️代码实现

//找链表的中间节点
struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow = head;struct ListNode* fast = head;while (fast != NULL && fast->next != NULL){slow = slow->next;fast = fast->next->next;}return slow;
}//反转链表
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* cur = head;struct ListNode* prev = NULL;while (cur != NULL){struct ListNode* next = cur->next;cur->next = prev;prev = cur;cur = next;}return prev;
}//牛客这道题不支持用C语言答题
//虽然我们还没有学C++,但是C++是兼容C的
//直接用C的方式写代码即可
class PalindromeList
{
public:bool chkPalindrome(ListNode* head){struct ListNode* list1 = head;struct ListNode* mid = middleNode(head);struct ListNode* list2 = reverseList(mid);while (list2 != NULL){if (list1->val != list2->val){return false;}list1 = list1->next;list2 = list2->next;}return true;}
};

提交代码:

成功通过

怎么样,大家看到这里把这三道题弄懂了吗?如果有问题可以在评论区留言哦 :D


 本文完

http://www.yayakq.cn/news/113341/

相关文章:

  • 免费快速建站网站wordpress 标签模板
  • 响应式网站建设智能优化南昌大型网站制作
  • 网站设计经典案例分析石家庄企业官网搭建
  • 做网站有什么js特效属于软件开发工具的是
  • 东莞知名网站推广google关键词挖掘工具
  • 安康市电梯公司网站性能优化的方法有哪些
  • 浏览器网站入口用模板做的网站不好优化
  • 免费追剧网站做企业网站服务
  • 电子商务网站开发期末考试自己的网站怎么推广
  • 建设局哪个网站查证seo主要优化哪些
  • 九江做网站的公司哪里好凡科手机网站建设
  • 食品品牌网站策划网站敏感词汇
  • 企业网站 数据库设计wordpress 采集 伪原创
  • 个人建网站允许吗陕西省城乡建设厅官方网站
  • 企业网站模板带后台建筑培训网考题答案
  • 水处理网站源码网站内容怎么选择
  • 3g下订单的网站怎么做亦庄网站建设
  • 昆明网站seo报价安卓市场官方版
  • 做psd模板下载网站优质服务的网站建设
  • 网站成立查询介绍一个做美食的网站
  • 迪拜哪个网站是做网站的大兴企业网站建设公司
  • 网站域名和邮箱域名解析哪个公司的软件开发公司
  • 延吉有没有做网站的汽车商城网站模板免费下载
  • 深圳宝安住房和建设局网站企业建站系统营销吧tt团队
  • 辽宁网站制作哪个网站可以做名片
  • 湘潭网站建设哪些公司瑞安app开发
  • 网站搭建福州公司网络营销的八大职能是什么
  • 网站建设栏目说明数字货币网站开发
  • 漯河专业做网站公司借贷网站开发是否合法
  • 前端和网站部署做网站的为什么seo工资不高