题目描述
输入两个链表,找出它们的第一个公共结点。
公共节点定义:两个节点有相同的地址和value,缺一不可。
所以不能分别new两个节点node1,node2 ,否则
while(node1!=node2)始终为true, 循环退不出来。
链表定义:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
分析:
所谓的公共节点,一定是两个链表共用的节点,不能new一个新的节点出来。
方法一、 第一反应就是采用蛮力的方法:在第一个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点。如果第二个链表上的节点和第一个链表上的节点一样,就说明两个链表在节点上重合,于是就找到了公共的节点。该算法的时间复杂的是 O(m*n)
方法二、从链表的定义可以看出,这两个链表是单链表,<