36.两个链表的第一个公共节点。
Posted yjxyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了36.两个链表的第一个公共节点。相关的知识,希望对你有一定的参考价值。
题目描述:
??输入两个链表,找出它们的第一个公共结点。
思路分析:
??由于链表的指针只能指向一个节点,所以两个链表相交后,后面的部分完全一样。所以我们的解题思路就是先求出两个链表的长度,设置俩个指针分别指向两个链表的头部。指向较长链表的指针先走两个链表长度差步,然后两个指针同时开始走,当两个指针指向同一个节点时,这个节点就是第一个公共节点。
代码:
/*
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=0;
int len2=0;
ListNode pNode1=pHead1;
ListNode pNode2=pHead2;
while(pHead1!=null){
len1++;
pHead1=pHead1.next;
}
while(pHead2!=null){
len2++;
pHead2=pHead2.next;
}
int n=Math.abs(len1-len2);
if(len1>len2){
while(n>0){
pNode1=pNode1.next;
n--;
}
}else{
while(n>0){
pNode2=pNode2.next;
n--;
}
}
while(pNode1!=pNode2){
pNode1=pNode1.next;
pNode2=pNode2.next;
}
return pNode1;
}
}
以上是关于36.两个链表的第一个公共节点。的主要内容,如果未能解决你的问题,请参考以下文章
JZ3.从尾到头打印链表;JZ14.链表中倒数第K个节点;JZ15.反转链表;JZ16.合并两个有序链表;JZ36.两个链表的第一个公共节点;JZ55.链表中环的入口节点;JZ56.删除链表中重复节点
JZ3.从尾到头打印链表;JZ14.链表中倒数第K个节点;JZ15.反转链表;JZ16.合并两个有序链表;JZ36.两个链表的第一个公共节点;JZ55.链表中环的入口节点;JZ56.删除链表中重复节点