题解 | #判断链表中是否有环#

判断链表中是否有环

https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9

package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */

/**
 * 
 * @param head ListNode类 
 * @return bool布尔型
*/
func hasCycle( head *ListNode ) bool {
    if head == nil || head.Next == nil{
        return false
    }
    // write code here
    slow :=head
    fast := head.Next

    for fast !=nil && fast.Next !=nil{
        if slow == fast{
            return true 
        }
        slow = slow.Next
        fast = fast.Next.Next
    }
    return false
}

在这个函数中,我们使用了两个指针:slowfastslow 指针每次移动一个节点,而 fast 指针每次移动两个节点。如果链表中存在环,那么 fast 指针最终会追上 slow 指针,此时函数返回 true。如果链表中没有环,fast 指针会先到达链表的尾部,函数返回 false

全部评论

相关推荐

07-07 11:33
江南大学 Java
已经在暑假实习了 ,没有明确说有hc,纠结实习到八月份会不会有点影响秋招毕竟感觉今年好多提前批
程序员小白条:92的话准备提前批,其他没必要,没面试机会的,而且你要准备充分,尤其八股和算法题
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务