题目描述:
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
题目数据 保证 整个链式结构中不存在环。
注意,函数返回结果后,链表必须 保持其原始结构。
解析:
1.定义两个指针n1和n2分别指向两个链表A和B的头节点
2.while循环,当n1和n2指的值不相等时
如果n1等于空,说明n1已经遍历完链表A,则使n1指向headB
如果n1不等于空,则n1指向下一个节点
如果n2等于空,说明n1已经遍历完链表B,则使n2指向headA
如果n2不等于空,则n2指向下一个节点
3.最后返回指针n1或者n2
Java:
public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode n1 = headA; ListNode n2 = headB; while(n1 != n2) { if(n1 == null) { n1 = headB; } else { n1 = n1.next; } if(n2 == null) { n2 = headA; } else { n2 = n2.next; } } return n1; }
JavaScript:
var getIntersectionNode = function(headA, headB) { let n1 = headA; let n2 = headB; while(n1 !== n2) { if(n1 === null) { n1 = headB; } else { n1 = n1.next; } if(n2 === null) { n2 = headA; } else { n2 = n2.next; } } return n1; };