141.js 956 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. console.log(hasCycle(n1))
  43. console.log(hasCycle(n2))
  44. }
  45. __main__()