两个链表的第一个公共结点

来源:互联网 发布:网络工程师和程序员 编辑:程序博客网 时间:2024/05/14 23:14

题目描述

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

/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {        int cnt1 = 0, cnt2 = 0;        ListNode p1 = pHead1, p2 = pHead2;        while(p1 != null) {            p1 = p1.next;            cnt1 ++;        }        while(p2 != null) {            p2 = p2.next;            cnt2 ++;        }        //1/0;        p1 = pHead1;        p2 = pHead2;        int diff = cnt2 - cnt1;        if(diff > 0) {            for(int i=0; i<diff; i++)                p2 = p2.next;        } else {            for(int i=0; i<Math.abs(diff); i++)                p1 = p1.next;        }        //ListNode rst = p1;        while(p1 != p2) {            p1 = p1.next;            p2 = p2.next;        }        return p1;    }}

OJ 上Debug可用1/0;

0 0
原创粉丝点击