141.js 1012 B

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