题目:输入两个链表,找出它们的第一个公共结点。
思路:先求两个链表的长度,求长度差n,让长的那个链表先走n,两个链表再同时走,直到指针指到相同节点。
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { if(pHead1==null||pHead2==null) return null; int n=0,m=0,cha=0; ListNode r1=pHead1,r2=pHead2; while(r1!=null){ n++; r1=r1.next; } while(r2!=null){ m++; r2=r2.next; } if(n>=m){ cha=n-m; while(cha-->0){ pHead1=pHead1.next; } while(pHead1!=pHead2){ pHead1=pHead1.next; pHead2=pHead2.next; } }else{ cha=m-n; while(cha-->0){ pHead2=pHead2.next; } while(pHead1!=pHead2){ pHead1=pHead1.next; pHead2=pHead2.next; } } return pHead1; }