小米笔试题–两个链表的第一个公共结点
题目描述
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3idLJ7o-1600157501963)(C:\Users\Carlos\Desktop\微信图片_20200915160755.jpg)]
我这边使用暴力法,逐一判断
代码如下:
package cn.lbl.face.link;
/*
输入两个链表,找出它们的第一个公共结点。
*/
public class 两个链表的第一个公共结点 {
private static ListNode temp;
public static ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
temp= pHead2;
while (pHead1!=null){
pHead2=temp;
while (pHead2!=null){
if (pHead1 == pHead2) {
return pHead1;
}else {
pHead2=pHead2.next;
continue;
}
}
pHead1=pHead1.next;
}
return null;
}
public static void main(String[] args) {
ListNode listNode1 = new ListNode(1);
ListNode listNode2 = new ListNode(2);
ListNode commlistNode = new ListNode(3);
ListNode newlistNode1 = new ListNode(1);
ListNode newlistNode2 = new ListNode(2);
listNode1.next=listNode2;
listNode2.next=commlistNode;
newlistNode1.next=newlistNode2;
newlistNode2.next=commlistNode;
FindFirstCommonNode(listNode1,newlistNode1);
}
}