public class findcommonnode {
public static void main(String[] args) {
ListNode p1 = new ListNode(1);
ListNode p2 = new ListNode(1);
ListNode p3 = new ListNode(1);
ListNode pq4 = new ListNode(1);
ListNode pq5 = new ListNode(1);
ListNode q1 = new ListNode(1);
ListNode q2 = new ListNode(1);
p1.next = p2;
p2.next = p3;
p3.next = pq4;
pq4.next = pq5;
q1.next = q2;
q2.next = pq4;
ListNode ans = FindFirstCommonNode(p1, q1);
while (ans != null) {
System.out.print(ans.val + " ");
ans = ans.next;
}
}
public static ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
if (pHead1 == null || pHead2 == null)
return null;
ListNode p = pHead1;
ListNode q = pHead2;
int lenp = 0;
int lenq = 0;
while (p != null) {
p = p.next;
lenp++;
}
while (q != null) {
q = q.next;
lenq++;
}
p = pHead1;
q = pHead2;
int count = 0;
if (lenp > lenq) {
count = lenp - lenq;
while (count-- > 0) {
p = p.next;
}
}
if (lenq > lenp) {
count = lenq - lenp;
while (count-- > 0) {
q = q.next;
}
}
while (p != null) {
if (p == q) {
return p;
} else {
p = p.next;
q = q.next;
}
}
return null;
}
public static class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
}
剑指offer找链表的公共节点
最新推荐文章于 2022-11-03 00:33:46 发布