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

判断链表中是否有环

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

解题思路是有两个指针,一个快指针,一个慢指针。慢指针每次移动一个结构体,快指针每次移动两个结构体。如果他们指向空,则没有环,如果他们相等,则有环。 C语言代码如下

 
 * @param head ListNode类 
 * @return bool布尔型
 */
bool hasCycle(struct ListNode* head ) {
    // write code here
    struct ListNode*fast=head;
    struct ListNode*slow=head;
    if(slow==NULL||slow->next==NULL||fast->next->next==NULL){
        return false;
    }//首先判断是否至少有三个结构体
    fast=fast->next->next;
    slow=slow->next;
    while(fast!=NULL){
        if(slow->next==NULL||fast->next->next==NULL||fast->next==NULL){
        return false;//判断下次循环是否能够循环
    }
        if(fast!=slow){
            fast=fast->next->next;
            slow=slow->next;//不相等就循环
        }else{
            return true;
        }
    }
    return false;
}
全部评论

相关推荐

点赞 评论 收藏
分享
09-02 11:51
门头沟学院 Java
网上随便找了个小米的内推码就投了,结果秒挂,有这么快嘛。。。。
Celia_小火花:只能说他工作效率还挺高
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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