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

网站做微信支付宝支付品牌设计logo图片

网站做微信支付宝支付,品牌设计logo图片,苏州优化方式,站长工具app🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 目录 前言 一、相交链表 题目链接 大致思路 代码实现 二、环形链表1 题目链接 大致思路 代码实现 三、环形链表2 题目链接 大致思路 代码实…

                                                🌹个人主页🌹:喜欢草莓熊的bear

                                                       🌹专栏🌹:数据结构

目录

前言

一、相交链表

题目链接

大致思路

代码实现

二、环形链表1

题目链接

大致思路

代码实现

三、环形链表2

题目链接

大致思路

代码实现

总结



前言

通过一些例题来复习一下之前学习的链表。

一、相交链表

题目链接

相交链表

大致思路

用两个指针来遍历两个链表,存在相同则就有相交(注意这里相同的地址或者是指针相同,不可以判断指针里面的值是否相同)。我们要让两个表在相同位置进行遍历、找相同操作。很简单我们用计数操作来计入链表长度,让长的走了距离差,再让他们同时走。这里计算距离差我们要调用一下绝对值函数(abs)。代码里面还运用了假设法,假设谁为长链表,假设不成立就调换一下就可以了,这里假设法值得体会一下。

代码实现

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{struct ListNode* curA = headA;struct ListNode* curB = headB;int A=0;int B=0;while(curA->next){curA=curA->next;A++;}while(curB->next){curB=curB->next;B++;}if(curA!=curB){return NULL;}int juli = abs(A-B);struct ListNode* llong = headA;struct ListNode* sshort = headB;if(A<B){llong = headB;sshort = headA;}while(juli--){llong=llong->next;}while(llong!=sshort){llong=llong->next;sshort=sshort->next;}return llong;
}

二、环形链表1

题目链接

环形链表1

大致思路

本地要求我们判断是否是一个带环链表,带环会存在循环,用快慢指针来解决这题。fast指针走两步,slow走一步。他们会相遇吗?我画图证明一下:我这里证明的是fast走两步,slow走一步的情况,其他情况大家可以尝试证明。

结论带环了一定会相遇,代码实现很简单。

代码实现

bool hasCycle(struct ListNode *head) 
{struct ListNode *fast=head;struct ListNode *slow=head;while(fast && fast->next){fast=fast->next->next;slow=slow->next;if(slow == fast){return true;}}return false;
}

三、环形链表2

题目链接

环形链表2

 基于带环链表衍生出来的,先判断是否带环,带环了还要返回入环的第一个节点。

大致思路

与上一题环形链表相似,还要返回第一个入环节点。这里先给上一个结论,让相遇指针的下一个节点和头指针同时走他们就会在第一入环的节点相遇。我们看作一个相交链表返回相交节点的问题来做,直接调用前面写的函数就可以了。    让我来证明一下

 运用了一下数学公式等到关系式证明了。

代码实现

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) 
{struct ListNode* curA = headA;struct ListNode* curB = headB;int A=0;int B=0;while(curA->next){curA=curA->next;A++;}while(curB->next){curB=curB->next;B++;}if(curA!=curB){return NULL;}int juli = abs(A-B);struct ListNode* llong = headA;struct ListNode* sshort = headB;if(A<B){llong = headB;sshort = headA;}while(juli--){llong=llong->next;}while(llong!=sshort){llong=llong->next;sshort=sshort->next;}return llong;
}
struct ListNode *detectCycle(struct ListNode *head) 
{struct ListNode *fast=head;struct ListNode *slow=head;while(fast && fast->next){fast=fast->next->next;slow=slow->next;if(slow == fast){struct ListNode* newnode = slow->next;slow->next=NULL;return getIntersectionNode(head,newnode);}}return NULL;
}

总结

这些都题还不错,值得我们掌握。加油加油,请持续关注bear!!🌹🌹

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

相关文章:

  • 贵州省建设厅官方网站官网潍坊网站制作多少钱
  • 购物商城网站制作建设网站坪山
  • seo推广网站网站建设方案范文
  • 网站建设勹金手指下拉微营销
  • 视频点播网站开发网站打开速度太慢
  • 网站的相对路径最近一周新闻大事摘抄2022年
  • 网站全局搜索如何做青岛网站设计报价
  • 免费网站建站w找个会做网站的 一起做网站
  • 商城网站建设公司报价微信公众号运营教程
  • 织梦学校网站wordpress右侧广告
  • 什么后台做网站安全wordpress 加密 插件
  • 镇江网站建设zjmfkj制作网页的超文本标记语言
  • 东莞专业微网站建设旅游网站的设计方案怎么做
  • 网站dedecms数据库扫码员在哪个网站可以做
  • 建立网站加强家园沟通和联系的做法有何利弊odoo 网站开发
  • 宁国网站建设|网站建设报价 - 新支点网站建设免费网站建设公司联系方式
  • 苏州网站建设提供商wordpress后台添加字段
  • 网站搭建 商城 seo河南省建设工程注册中心网站
  • 大学专业宣传网站开发课题意义法律咨询
  • 2016网站设计趋势seo搜索引擎招聘
  • 高端网站设计 新鸿儒新乡网页制作
  • 罗湖网站设计价格wordpress 更换域名
  • 手机网站 如何 推广方案设计wordpress 调用个人资料
  • qq网站代码郑州网站免费制作
  • 高水平的郑州网站建设小程序链接如何转成网页链接
  • 宁波模板建站源码搭建什么网站好玩
  • 中国建设银行网站个人南宁seo多少钱报价
  • 用邮箱找回智慧团建密码seo优化知识总结
  • 学校网站手机站的建设泰安房产网签
  • 集团网站建设需求重庆网站建设快速建站