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

做区域县城招聘网站百度客服电话4001056

做区域县城招聘网站,百度客服电话4001056,电子商务网站建设与管理感想和收获,现在装修流行什么样的风格来了来了,这道题才是值得我们奇思妙想的题,链接在下面。 160. 相交链表 - 力扣(LeetCode) 看完题目一脸懵吗,没关系,我们还得看示例 还是一脸懵怎么办?? 两个链表相交的方式有几种?…

来了来了,这道题才是值得我们奇思妙想的题,链接在下面。

160. 相交链表 - 力扣(LeetCode)

看完题目一脸懵吗,没关系,我们还得看示例

 还是一脸懵怎么办?? 两个链表相交的方式有几种?

我们再来仔细看一下这道题

这里我们就看到了,可能出现三种形式的相交,那我们就要在想一下,这三种情况下,我们应该怎么去判断这两个链表是相交的。

 为什么是找地址而不是比值呢?我们就把图放大来看看:

这里我们看到,困扰我们的,是两个链表不等长,就像示例1中,即使我们的比值一样了,但是所在位置不一样,不一定是相交。所以在这里,还是用我们的地址来判断最为稳妥。 

好了,那我们来试试看,能不能用双指针法来解决,但是你会很直观发现不可行,因为链表长度是不相同的。 那怎么解决呢?

那我们就要找两个链表的长度差了,这里不是链表长短不一样阻碍了我吗?那我干脆让他等长好了。让长的链表先走两个链表之间的长度差次。为什么可以这样做?看图。无论我这个链表多长,那我相交节点前的两个链表肯定有一个节点是对齐的。

这里放一下如何计算长度差:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/typedef struct ListNode ListNode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//计算两个链表长度ListNode* pa = headA , *pb = headB;int sizeA = 0,sizeB = 0;while(pa){++sizeA;pa = pa->next;}while(pb){++sizeB;pb = pb->next;}//计算长度差 -- 绝对值(可以使用函数abs)int gap = abs(sizeA - sizeB);//找大小链表 -- 让大链表走gap 步ListNode* longList = headA;ListNode* shortList = headB;if(sizeA < sizeB){longList = headB;shortList = headA;}while(gap--){longList = longList->next;}//遍历链表 -- 找相交结点//存在相交结点while(longList){if(longList == shortList){return longList;}longList = longList->next;shortList = shortList->next;}//不存在相交结点return NULL;}

 这就是我们的第一种方法:计算长度

第二种方法:走过彼此的路

除了计算链表长度外,我们还可以利用 两链表长度和相等 的性质来使得两个遍历指针同步

具体做法是:先遍历其中一个链表,当到底末端后跳到另一链表,最后

若两链表没有公共结点,那么两个链表指针都会走过s1+s2个结点,同时到达两链表末尾

若有公共结点,由于最后会同时走到两链表终点,所以倒退回去,两个指针一定会在第一个公共结点处相遇

可以自己在图里跳一遍!利用的就是长度差,一个快一个慢,但是最后走的路都一样,到达终点前的最后一步也一样!!非常奇妙

当然,若两链表等长,那确实不会跳到另一链表,不过链表等长本身指针就是同步的,同样也能找到公共结点

代码量很小,不过需要细致的观察。

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode *p, *q;for (p = headA, q = headB; p != q; ){if (p != NULL)p = p->next;else p = headB;if (q != NULL)q = q->next;else q = headA;}return p;
}

好了,这道题就讲到这里

如果你觉得对你有帮助,可以点赞关注加收藏,感谢您的阅读,我们下一篇文章再见。

一步步来,总会学会的,首先要懂思路,才能有东西写。

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

相关文章:

  • 四川人防工程建设网站营销策划机构
  • 微信网站建设价格免费网站站长查询
  • 禹城做网站的公司白酒最有效的推广方式
  • PHP网站开发方向seo兼职外包
  • 网络建设文章网站电子商务网站推广策略
  • 有口碑的大良网站建设重庆网站推广软件
  • 怎样办自己的网站国家提供的免费网课平台
  • 奶茶加盟网站建设公司哪家好网站关键词优化
  • 网站建设设计师助理岗位介绍谷歌搜索广告
  • 移动互联网站建设优化王
  • 专门做家具网站苏州整站优化
  • 做淘宝网站报告长春seo排名优化
  • bmwvin网站谁做的湖南产品网络推广业务
  • 网站建设官方网站如何创建属于自己的网站
  • 徐州网站建设方案推广外链查询工具
  • 做网站和做网页游戏加盟
  • 男女之间做那种事情视频网站广州品牌营销服务
  • wordpress去掉分类seo服务运用什么技术
  • 自己做网站和凡科的区别google play三件套
  • 新闻网站建设公司搜索引擎优化课程
  • 做app和网站哪个比较好用网上推广产品怎么做
  • 做网站包含的技术网络整合营销是什么意思
  • 网站建设公司哪家专业广告推广文案
  • 2003网站建设seo案例视频教程
  • 公司网站下二级站点如何做怎么注册百度账号
  • 赤峰市城乡建设委员会官方网站简述网络营销与传统营销的整合
  • 大连网站制作公司百度图片识别
  • 自己网站如何做关键词seo排名软件有用吗
  • 做网站有谁做品牌营销策划是干嘛的
  • 网站建设费属于广宣费吗网站seo推广营销