数据结构与算法每日一题——链表(剑指 Offer II 021. 删除链表的倒数第 n 个结点)

30 阅读1分钟

141. 环形链表

解法一:快慢指针
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

/**
 * @param {ListNode} head
 * @return {boolean}
 */
// var hasCycle = function (head) {
    // // 定义一个快指针和一个慢指针
    // let fast = head
    // let slow = head
    // // 循环快慢指针
    // while(slow && fast && fast.next){
    //     // 慢指针移动一步,快指针移动两步,相等时相遇
    //     slow = slow.next
    //     fast = fast.next.next
    //     if(slow == fast){
    //         return true
    //     }
    // }
    // return false
// };ˇ

解法二:
 // JSON.stringify()方法在对象出现循环引用的时候会报错
 var hasCycle = function (head) {
    // JSON.stringify()方法在对象出现循环引用的时候会报错
    try {
        JSON.stringify(head)
    } catch {
        return true
    }
    return false
};