1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 'use strict'
- /**
- * Definition for singly-linked list.
- * function ListNode(val) {
- * this.val = val;
- * this.next = null;
- * }
- */
- function ListNode(val) {
- this.val = val
- this.next = null
- }
- /**
- * @param {ListNode} headA
- * @param {ListNode} headB
- * @return {ListNode}
- */
- var getIntersectionNode = function (headA, headB) {
- let set = new Set()
- let pA = headA,
- pB = headB
- while (pA !== null && pB != null) {
- if (set.has(pA)) return pA
- set.add(pA)
- if (set.has(pB)) return pB
- set.add(pB)
- pA = pA.next
- pB = pB.next
- }
- if (pA === pB) return null
- let curr = null
- if (pA === null) {
- curr = pB
- } else {
- curr = pA
- }
- while (curr !== null) {
- if (set.has(curr)) return curr
- set.add(curr)
- curr = curr.next
- }
- return null
- }
- function __main__() {
- let n2 = new ListNode(2)
- let n22 = new ListNode(3)
- let n23 = new ListNode(3)
- let n24 = new ListNode(3)
- n2.next = n22
- n22.next = n23
- n23.next = n24
- let n1 = new ListNode(3)
- let n12 = new ListNode(3)
- let n13 = new ListNode(3)
- n1.next = n12
- n12.next = n13
- n24.next = n12
- let n3 = new ListNode(3)
- /*eslint no-console: ["error", { allow: ["log"] }] */
- console.log(getIntersectionNode(n1, n2))
- console.log(getIntersectionNode(n2, n3))
- }
- __main__()
|