160.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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} headA
  14. * @param {ListNode} headB
  15. * @return {ListNode}
  16. */
  17. var getIntersectionNode = function (headA, headB) {
  18. let set = new Set()
  19. let pA = headA,
  20. pB = headB
  21. while (pA !== null && pB != null) {
  22. if (set.has(pA)) return pA
  23. set.add(pA)
  24. if (set.has(pB)) return pB
  25. set.add(pB)
  26. pA = pA.next
  27. pB = pB.next
  28. }
  29. if (pA === pB) return null
  30. let curr = null
  31. if (pA === null) {
  32. curr = pB
  33. } else {
  34. curr = pA
  35. }
  36. while (curr !== null) {
  37. if (set.has(curr)) return curr
  38. set.add(curr)
  39. curr = curr.next
  40. }
  41. return null
  42. };
  43. function __main__() {
  44. let n2 = new ListNode(2)
  45. let n22 = new ListNode(3)
  46. let n23 = new ListNode(3)
  47. let n24 = new ListNode(3)
  48. n2.next = n22
  49. n22.next = n23
  50. n23.next = n24
  51. let n1 = new ListNode(3)
  52. let n12 = new ListNode(3)
  53. let n13 = new ListNode(3)
  54. n1.next = n12
  55. n12.next = n13
  56. n24.next = n12
  57. let n3 = new ListNode(3)
  58. console.log(getIntersectionNode(n1, n2))
  59. console.log(getIntersectionNode(n2, n3))
  60. }
  61. __main__()