题目:
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
源码:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if (pHead1 == null || pHead2 == null) {
return null;
}
int len1 = size(pHead1);
int len2 = size(pHead2);
if (len1 > len2) {
for (int i = 0; i < len1 - len2; i++) {
pHead1 = pHead1.next;
}
} else {
for (int j = 0; j < len2 - len1; j++) {
pHead2 = pHead2.next;
}
}
while (pHead1 != null && pHead2 != null) {
if (pHead1 == pHead2) {
return pHead1;
}
pHead1 = pHead1.next;
pHead2 = pHead2.next;
}
return null;
}
public int size(ListNode head) {
int size = 0;
for (ListNode cur = head; cur != null; cur = cur.next) {
size++;
}
return size;
}
}