22年刷算法第六题

77 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

前言

2022春招打卡活动,刷算法的快乐走起

题目描述

题目链接:环形链表

题目描述我用截图leetcode的为主,题目如下图:

image.png

思路分析

题目解析:判断链表是否有闭环,老规矩,考虑一下边界或者特殊情况,链表不存在,那就没有闭环,链表只有一个长度,又不是指向自身也可以为false。继续分析:链表循环,那就是多次指向几个相同节点,那想起了一个js经常写的情况,判断有无这个属性,无则添加这个属性,有则加一。我这也是采用相同,第一次遍历节点 给它添加一个tag记录标识,如果再次遇到则说明是环,抛出true,结束循环,否则遍历完整个链表还没遇到重复就返回false。

解法:

/**
 * @param {ListNode} head
 * @return {boolean}
 */
var hasCycle = function(head) {
    if(!head){
        return false
    }
    let curr = head
    while(curr){
        if(curr.tag){
            return true
        }else{
           let next=curr.next
           curr.tag=true
           curr=next
        }
    }
    return false
};


image.png

总结

坚持就是胜利。第6题算法完成!