141.js 942 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. * Definition for singly-linked list.
  3. * function ListNode(val) {
  4. * this.val = val;
  5. * this.next = null;
  6. * }
  7. */
  8. function ListNode(val) {
  9. this.val = val;
  10. this.next = null;
  11. }
  12. /**
  13. * @param {ListNode} head
  14. * @return {boolean}
  15. */
  16. var hasCycle = function(head) {
  17. if (head === null || head.next === null) return false
  18. let set = new Set()
  19. let curr = head
  20. set.add(curr)
  21. curr = curr.next
  22. for (;;) {
  23. if (curr === null) return false
  24. if (set.has(curr)) return true
  25. set.add(curr)
  26. curr = curr.next
  27. }
  28. }
  29. function __main__() {
  30. let n13 = new ListNode(3)
  31. let n12 = new ListNode(3)
  32. let n1 = new ListNode(1)
  33. n1.next = n12
  34. n12.next = n13
  35. let n23 = new ListNode(3)
  36. let n22 = new ListNode(3)
  37. let n2 = new ListNode(1)
  38. n23.next = n2
  39. n2.next = n22
  40. n22.next = n23
  41. console.log(hasCycle(n1))
  42. console.log(hasCycle(n2))
  43. }
  44. __main__()