网站手机端 怎么做北京好用的h5建站
网站手机端 怎么做,北京好用的h5建站,做企业网站专用词,网页设计培训全名文章目录 力扣141-环形链表示例代码实现要点剖析 力扣141-环形链表
给你一个链表的头节点 head #xff0c;判断链表中是否有环。
如果链表中有某个节点#xff0c;可以通过连续跟踪 next 指针再次到达#xff0c;则链表中存在环。 为了表示给定链表中的环#xff0c;评测… 文章目录 力扣141-环形链表示例代码实现要点剖析 力扣141-环形链表
给你一个链表的头节点 head 判断链表中是否有环。
如果链表中有某个节点可以通过连续跟踪 next 指针再次到达则链表中存在环。 为了表示给定链表中的环评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置索引从 0 开始。注意pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 则返回 true 。 否则返回 false 。
示例 代码实现
/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*/
public class Solution {public boolean hasCycle(ListNode head) {if(headnull||head.nextnull){return false;}ListNode slowhead;ListNode fasthead.next;while(slow!fastfast!nullfast.next!null){slow slow.next;fastfast.next.next;}if(slowfast){return true;}else{return false;}}
}要点剖析
1、链表中找环的思想快慢指针创建两个指针一个快指针一次走两步一个慢指针一次走一步若相遇则有环若指向null则无环。
2、为什么我们要规定初始时慢指针在位置 head快指针在位置 head.next而不是两个指针都在位置 head即与「乌龟」和「兔子」中的叙述相同
观察上面面的代码我们使用的是 while 循环循环条件先于循环体。由于循环条件一定是判断快慢指针是否重合如果我们将两个指针初始都置于 head那么 while 循环就不会执行。因此我们可以假想一个在 head 之前的虚拟节点慢指针从虚拟节点移动一步到达 head快指针从虚拟节点移动两步到达 head.next这样我们就可以使用 while 循环了。
当然我们也可以使用 do-while 循环。此时我们就可以把快慢指针的初始值都置为 head。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89008.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!