剑指offer--两个链表的第一个公共结点

来源:互联网 发布:著名的国内金融数据库 编辑:程序博客网 时间:2024/05/27 16:40

题目描述

输入两个链表,找出它们的第一个公共结点。


分类:链表

解法1:先计算两个链表的长度,然后让较长的先走即可
/*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;         ListNode p = pHead1;         int count1 = 0;         while(p!=null){             p = p.next;             count1++;         }         ListNode q = pHead2;         int count2 = 0;         while(q!=null){             q = q.next;             count2++;         }         int gap = count1-count2;         if(gap>0){                          while(gap>0){                 pHead1 = pHead1.next;                 gap--;             }         }else{             while(gap<0){                 pHead2 = pHead2.next;                 gap++;             }         }         while(pHead1!=pHead2){             pHead1 = pHead1.next;             pHead2 = pHead2.next;         }         return pHead1;    }}

0 0
原创粉丝点击