【leetcode】141.环形链表

29 阅读1分钟

leetcode-141.png

链表

寻找是否存在环,快慢指针可以解决,注意判断跳出条件即可

var hasCycle = function(head) {
  let slow = head, fast = head
  // fast 比 slow 走的快
  // 如果不存在环,那么肯定是fast先碰到null
  while(fast){
    slow = slow.next
    // 这里如果不用 ?. 的写法,那么就会出错了
    // 因为 fast.next 可能为 null
    // null.next 肯定会出错
    fast = fast.next?.next
    if(slow === fast) return true
  }
  return false
};

如果不用?.的写法,那么就要在while中多判断一项fast.next

var hasCycle = function(head) {
  let slow = head
  let fast = head
  while (fast !== null && fast.next !== null) {
    slow = slow.next
    fast = fast.next.next
    if (slow === fast) return true
  }
  return false
};