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

网站建设汉狮怎么样沈阳微信网站建设

网站建设汉狮怎么样,沈阳微信网站建设,网页设计的基础知识,网站建设与开发试题与答案题目链接:142.环形链表II 题目描述: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环…

题目链接:142.环形链表II

题目描述:

        给定一个链表的头节点  head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

不允许修改 链表。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。

提示:

  • 链表中节点的数目范围在范围 [0, 104] 内
  • -105 <= Node.val <= 105
  • pos 的值为 -1 或者链表中的一个有效索引

思路:参考环形链表I ,依旧使用快慢指针解决

        参考环形链表I ,快慢指针一定会在环形链表中相遇。

        以示例1为例:

        head为链表的头结点,meet为快慢指针在环中的相遇点, 由图可以初步判断:

        meet到入环的初始结点的距离等于head到入环的初始结点的距离。

证明:相遇点到入环起始结点的距离 = 链表头结点到入环起始结点的距离

        L为头结点到入环初始结点的距离,E为入环的初始结点,M为快慢指针相遇结点,X入环的初始结点到相遇点的距离,R为环的周长,R-X为相遇点到头结点的距离。

        在快慢指针相遇时,fast所走的路程为L+X+nR,slow所走的路程为L+X

        又因为慢指针走一步,快指针走两步,有以下公式:

2*慢指针的路程 = 快指针的路程

        代入快慢指针路程可以得到:

     L = (n-1)R+(R-X),n = 1,2,3...           

        当n等于1时,即相遇时,快指针刚好绕环一圈,则L = R-X 

相遇点到入环起始结点的距离 = 链表头结点到入环起始结点的距离

 代码实现:

    ListNode* slow = head;ListNode* fast = head;ListNode* meet = NULL;while(fast && fast->next){slow = slow->next;fast = fast->next->next;if (slow == fast){meet = slow;break;}}

        定义快慢指针,找到相遇结点meet,找到后跳出循环。

    ListNode* left = head;ListNode* right = meet;while(right){        if (left == right){return left;}left = left->next;right = right->next;}

        找到相遇点后,让头结点和相遇点同时往后遍历,找到入环的起始结点,若相遇点为空,直接返回NULL。

完整代码:

 typedef struct ListNode ListNode;
struct ListNode *detectCycle(struct ListNode *head) {ListNode* slow = head;ListNode* fast = head;ListNode* meet = NULL;while(fast && fast->next){slow = slow->next;fast = fast->next->next;if (slow == fast){meet = slow;break;}}ListNode* left = head;ListNode* right = meet;while(right){        if (left == right){return left;}left = left->next;right = right->next;}return NULL;
}
http://www.yayakq.cn/news/276665/

相关文章:

  • 福安市住房和城乡建设网站wordpress客户端5.5
  • 做外贸需要自己建网站吗白鹭引擎做h5网站
  • 禅城网站建设费用外贸建站用什么平台好
  • 贵州移动端网站建设制作企业官网哪家好
  • 苏州网站建设书生提升学历
  • 东莞市营销网站建设广西壮族自治区图书馆
  • 无锡电子商城网站建设wordpress防御插件
  • 美食网站建设的必要性四川城乡建设证件查询官网
  • 广东高端建设网站无锡建设网站公司
  • 网站设计师工作室双井做网站的公司
  • 有很多长尾怎么做网站内容苏州网站制作网络建设公司
  • 北京网站建设q479185700棒做网站挣外快
  • 做网站的图片要多少像素seo搜索引擎优化平台
  • 了解公司的网站网易严选的网站建设
  • 纯色涂料网站建设怎样建立网站平台
  • wp 企业网站模板网站 linux 服务器
  • 兖州网站建设免费网络推广平台有哪些
  • 哪里免费做网站南阳东莞网站建设公司
  • 为自己家秘方做网站有趣的网站网址
  • 网站电脑培训班附近有吗黄骅市找工作
  • php可以自己做网站吗网站建设公众号小程序开发
  • 企业网站优化之如何做需求分析常州北京网站建设
  • 二级域名可以做网站wordpress中文主题推荐
  • 买个网站域名要多少钱一年法律垂直问答网站怎样做
  • 自己网站上做支付宝怎么收费的房产证
  • 做网站服务费税率明薇通网站建设首选
  • 创建网站为啥要钱湖南彩票网站开发
  • aspnet网站开发 视频阳新网站建设
  • 永久免费网站申请注册建设实验中心网站
  • 建设网站买了域名还要什么资料设计说明怎么写范文