https://leetcode-cn.com/problems/linked-list-cycle-ii/

    1. /**
    2. * Definition for singly-linked list.
    3. * class ListNode {
    4. * val: number
    5. * next: ListNode | null
    6. * constructor(val?: number, next?: ListNode | null) {
    7. * this.val = (val===undefined ? 0 : val)
    8. * this.next = (next===undefined ? null : next)
    9. * }
    10. * }
    11. */
    12. function detectCycle(head: ListNode | null): ListNode | null {
    13. if (head === null) return null
    14. let fast = head;
    15. let slow = head;
    16. let isCycle = false;
    17. while (fast.next !== null && fast.next.next !== null) {
    18. fast = fast.next.next
    19. slow = slow.next!
    20. if (slow === fast) {
    21. isCycle = true
    22. break;
    23. }
    24. }
    25. if (!isCycle) return null
    26. fast = head
    27. while (slow!==fast) {
    28. fast = fast.next!
    29. slow = slow.next!
    30. }
    31. return fast
    32. };
    function detectCycle(head: ListNode | null): ListNode | null {
      let val: ListNode[] = []
      let last: ListNode | null = head
      while (last !== null && last.next !== null) {
        val.push(last)
        last = last.next
      }
      if (last == null) return null
      else {
        for (let i = 0; i < val.length; i++) {
          if (val[i].val === last.val) {
            return val[i]
            break
          }
        }
      }
    }